x86-64 相关问题

x86-64是Intel x86架构的64位扩展

x86:有没有办法确定缓冲区的长度?

假设我有一个这样声明的缓冲区: .bss 节 .lcomm 缓冲区,33 我将它压入堆栈,并将其作为参数传递给另一个需要 44 字节长度缓冲区的函数。 难道是……

回答 1 投票 0

跳转到长模式 x86_64 时出现三重故障

我有业余爱好操作系统,我希望它跳转到 64 位长模式,在远跳转到 64 位长模式条目之前一切正常,分页工作正常,但 QEMU 日志文件显示 EFER 值是 LMA 三重...

回答 1 投票 0

在汇编中,你如何处理C结构体?

例如,如何为这个系统调用sys_wait4准备参数: asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru) 1120 { 如何应对

回答 2 投票 0

`var@GOTPCREL(%rip)`是什么意思?

@GOTPCREL(%rip) 是什么意思? 我遇到过这行 mov var@GOTPCREL(%rip), %rax 并且对奇怪的语法有点困惑。 有人可以推荐相关的吗...

回答 1 投票 0

实现闭包和性能影响,例如相对与绝对跳跃

不久前,我在编译器类中学习了闭包转换,并且想知道调用闭包与调用函数会产生多少性能开销。 考虑一个函数

回答 1 投票 0

16 位寄存器的 x64 REX 前缀

我对 REX 前缀感到困惑: 文档说 REX 的定义是: REX 位: |7|6|5|4|3|2|1|0| |0|1|0|0|W|R|X|B| W 位 = 操作数大小 1==64 位,0== 旧版,取决于操作码。 R 位 = 外部...

回答 1 投票 0

相对跳跃与绝对跳跃的表现

不久前,我在编译器类中学习了闭包转换,并且想知道调用闭包与调用函数会产生多少性能开销。 考虑一个函数

回答 1 投票 0

错误:“push”的指令后缀无效[重复]

我正在尝试研究通过汇编中的堆栈将参数传递到函数中。我使用的是 Fedora 20,一个 64 位系统。 当我尝试以下代码时: 推入%ebp 人口%ebp 我收到错误: 错误:我...

回答 1 投票 0

如何从 asm 列表中确定使用哪个 x86 内存操作数宽度和类型?

同一指令有多个版本:IDIV M32、IDIV R32、IDIV M64、IDIV R64 (https://www.felixcloutier.com/x86/idiv) 如何了解使用的是哪一个?比方说 vdiv(std::向量&l...

回答 1 投票 0

x86-64 只是 EM64T 的别名吗?

我正在读一本描述历史观点的书: Pentium 4E(2004 年,125 M 晶体管)。添加了超线程,这是一种在单个处理器上同时运行两个程序的方法......

回答 2 投票 0

如何访问在进入 DLL 时在堆栈上传递的参数?

我正在从 ctypes 调用 NASM 64 位 DLL。该 dll 有五个输入参数。在 Windows 调用约定中,前四个在 rcx、rdx、r8 和 r9 中传递,第五个在

回答 1 投票 0

如何从c++调用ASM函数

我尝试从 C++ 调用 ASM 函数,但收到错误“未解析的外部符号引用” 我的 C++ 代码: 外部无效 foo(); int main() { foo(); 返回0; } 我的汇编代码: .t 节...

回答 1 投票 0

为什么 GCC 和 Clang 会在两个分支上弹出而不是只弹出一次?

GCC 和 Clang 都可以编译 布尔预测(); 无效 f(); 无效 g(); 无效 h() { 如果(预测()){ F(); } 别的 { G(); } } 到一些变化 # Clang -Os 输出。 -O3是一样的 哈...

回答 1 投票 0

汇编器(masm 64)错误致命错误LNK1104

你能告诉我如何使这段代码能够看到C:驱动器并正常工作吗? 包括 \masm64\include64\masm64rt.inc 。数据 BS 设备 128 Fname BYTE "C:\",0 ; ms1 db“可用空间...

回答 1 投票 0

在机器代码中打印字符串时出现分段错误

我正在编写一个机器代码程序,用于在 64 位 Linux 中将字符串打印到终端。这是我的代码: 00000000: 7f45 4c46 0201 0103 0000 0000 0000 0000 .ELF............ 00000010: 0200 3e00 0100 0...

回答 1 投票 0

记住 x86-64 System V arg 寄存器顺序的最佳方法是什么?

我经常忘记系统调用中每个参数需要使用的寄存器,每次我忘记时我都会访问这个问题。 整数/指针参数到 x86_64 用户空间函数的正确顺序...

回答 2 投票 0

如何确保内存分配在某个地址附近?

我正在为 x86_64 编写一个 JIT 重新编译器,有时发出的代码需要从编译的二进制文件中调用函数。 由于 ASLR,我的程序的 .text 段被放置在某个随机地址...

回答 1 投票 0

组装检查三个数中最大的一个

我现在正在学习汇编,我有一个很大的问题需要解决。 (顺便说一句,我使用 x86_64 nasm 程序集) 到目前为止,我已经做到了这一点 .bss 节 结果:resb 10 .data 节 num1: 数据库'22' ...

回答 2 投票 0

进行多平台交叉编译Docker构建时安装正确的arm64包

我使用Linux构建了一个多平台Docker镜像,并通过piprequirements.xt文件安装了numpy。镜像构建良好,容器在 Windows/Linux 上运行良好,但在 M1 mac 上运行时

回答 1 投票 0

CPUID:为什么某些功能必须将 MISC_ENABLE.LCMV 设置为 0?可以暂时覆盖吗?

我正在尝试使用CPUID,但有一些附加条件。根据 sandpile.org 的 CPUID 页面,CPUID 标准函数 0000_0004h 及以上仅在设置 MISC_ENABLE.LCMV 标志时才起作用...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.