假设我想将以下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
答案 0 :(得分:1)
您的输出看起来正确(除了我不费心计算高于AL和AH的东西)。
大/小尾数通常仅适用于可寻址存储器,对于寄存器来说,这没有什么意义(除非您像以前那样对尾数的定义进行一些扩展,但请注意,这种访问部分内容的能力使用不同的寄存器名称/指令的寄存器非常针对x86 / x64)。
恕我直言,在这里使用术语Bit Numbering和x86参考文档中AL,AH等的定义更为正确。
另一方面,当RAX保存到内存中时,AL将位于最低地址的字节中...