al和r8b之间的英特尔组装差异

时间:2015-02-19 16:56:40

标签: assembly intel

我想知道AL和R8B之间的主要区别是什么 根据我的理解,AL表示RAX的8个最低位,R8B表示R8的8个最低位

但我的程序的最终输出是不一样的(当它与R8B一起时它实际上不工作AL)但两者似乎都有相同的用途。

2 个答案:

答案 0 :(得分:1)

存在差异。使用r8b表示REX.R或REX.B,并且拥有任何REX前缀都意味着您无法使用ahchdh或{{1在同一条指令中(用于它们的编码将分别表示bhsplbplsil。例如,这是可编码的:

dil

但这不可编码:

add al, ah

所以它们不是完全可以互换的。

答案 1 :(得分:0)

它们是不同的寄存器。 RAX可以“翻译”为R0。所以AL将是R0B。但由于历史原因,名称为RAX,低8位则为AL。