相关疑难解决方法(0)

Why does Windows64 use a different calling convention from all other OSes on x86-64?

AMD has an ABI specification that describes the calling convention to use on x86-64. All OSes follow it, except for Windows which has it's own x86-64 calling convention. Why?

Does anyone know the technical, historical, or political reasons for this difference, or is it purely a matter of NIHsyndrome?

I understand that different OSes may have different needs for higher level things, but that doesn't explain why for example the register parameter passing order on Windows is rcx - rdx …

windows x86-64 calling-convention

97
推荐指数
4
解决办法
2万
查看次数

新的X86_64处理器寄存器的名称是什么?

在哪里可以找到用于此体系结构的新寄存器的名称?

我指的是X86中的寄存​​器,如EAX,ESP,EBX等.但我喜欢它们在64位.

我不认为它们与我拆解C代码时的情况相同,我得到r而不是e.

x86 assembly x86-64 cpu-registers

54
推荐指数
4
解决办法
7万
查看次数

为什么rbp和rsp称为通用寄存器?

根据英特尔在x64中,以下寄存器称为通用寄存器(RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8-R15)https://software.intel.com/en-us/articles/介绍到x64组装.

在下面的文章中,写了RBP和RSP是专用寄存器(RBP指向当前堆栈帧的基础,RSP指向当前堆栈帧的顶部). https://www.recurse.com/blog/7-understanding-c-by-learning-assembly

现在我有两个相互矛盾的陈述.英特尔声明应该是值得信赖的,但是什么是正确的,为什么RBP和RSP被称为通用目的?

谢谢你的帮助.

assembly x86-64 cpu-registers

20
推荐指数
2
解决办法
2万
查看次数

英特尔32位和64位寄存器的名称中E和R前缀代表什么?

32位寄存器名称以E开头,64位寄存器以R开头.E和R代表什么?是否有理由选择这些字母?

此外,在64位寄存器中,我们也可以在任何低级调试器(如Windbg)中看到,最右边的位仍然用与64位寄存器相同的名称引用,除了名称以E.例如,64位系统中RAX寄存器的最右边32位称为EAX.

那么,E和R代表什么?而且,为什么后缀X用于注册?

64-bit x86 assembly x86-64 cpu-registers

13
推荐指数
1
解决办法
3294
查看次数