我想知道AL和R8B之间的主要区别是什么 根据我的理解,AL表示RAX的8个最低位,R8B表示R8的8个最低位
但我的程序的最终输出是不一样的(当它与R8B一起时它实际上不工作AL)但两者似乎都有相同的用途。
答案 0 :(得分:1)
存在差异。使用r8b
表示REX.R或REX.B,并且拥有任何REX前缀都意味着您无法使用ah
,ch
,dh
或{{1在同一条指令中(用于它们的编码将分别表示bh
,spl
,bpl
和sil
。例如,这是可编码的:
dil
但这不可编码:
add al, ah
所以它们不是完全可以互换的。
答案 1 :(得分:0)
它们是不同的寄存器。 RAX可以“翻译”为R0。所以AL将是R0B。但由于历史原因,名称为RAX,低8位则为AL。