Cpu寄存器中的字节存储:RAX中AL在哪里?

时间:2019-04-16 15:10:38

标签: assembly x86-64 cpu-registers

假设我想将以下64位数字存储在RAX寄存器中,寄存器中的字节顺序是什么?

10011111 10100000 11011111 00000001 00001111 00100110 00100110 11101000

RAX = full number; EAX = 00001111 00100110 00100110 11101000; AX = 00100110 11101000; AH = 00100110; AL = 11101000.

是否要在AL中存储最低有效字节?

顺序是由小字节序还是大字节序决定的,还是寄存器存储始终相同?

在这种情况下,这些输出正确吗? AL = 232; AH = 38; AX = 9960; EAX = 254158568; RAX = 11502438643946366696

1 个答案:

答案 0 :(得分:1)

您的输出看起来正确(除了我不费心计算高于AL和AH的东西)。

大/小尾数通常仅适用于可寻址存储器,对于寄存器来说,这没有什么意义(除非您像以前那样对尾数的定义进行一些扩展,但请注意,这种访问部分内容的能力使用不同的寄存器名称/指令的寄存器非常针对x86 / x64)。

恕我直言,在这里使用术语Bit Numbering和x86参考文档中AL,AH等的定义更为正确。

另一方面,当RAX保存到内存中时,AL将位于最低地址的字节中...