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 …
x86汇编语言不得不改变,因为x86处理器架构已经从8位变为16位变为32位,现在变为64位.
我知道在32位汇编程序寄存器名称(EAX,EBX等)中,每个名称的E前缀代表扩展意味着32位形式的寄存器而不是16位形式(AX,BX等).
这些寄存器名称的R前缀在64位中代表什么?
32位寄存器名称以E开头,64位寄存器以R开头.E和R代表什么?是否有理由选择这些字母?
此外,在64位寄存器中,我们也可以在任何低级调试器(如Windbg)中看到,最右边的位仍然用与64位寄存器相同的名称引用,除了名称以E.例如,64位系统中RAX寄存器的最右边32位称为EAX.
那么,E和R代表什么?而且,为什么后缀X用于注册?