相关疑难解决方法(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万
查看次数

R代表RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP?

x86汇编语言不得不改变,因为x86处理器架构已经从8位变为16位变为32位,现在变为64位.

我知道在32位汇编程序寄存器名称(EAX,EBX等)中,每个名称的E前缀代表扩展意味着32位形式的寄存器而不是16位形式(AX,BX等).

这些寄存器名称的R前缀在64位中代表什么?

x86 assembly x86-64 cpu-architecture 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
查看次数