我们假设我们在这样的大会中有一条线:
Mango : John(4), Tom(2), Greg(1)...
Banana: Tom(5), John(2), ...
我知道一个寄存器用于32位,另一个用于64位。但是有可能将.loop:
cmp %esi, %rcx
转换为32位,以便在尝试运行代码时不会出错吗?我知道我可以使用%rcx
,但我想知道是否可以使用ecx
答案 0 :(得分:1)
您不想使用32位%ecx寄存器,而是使用64位%rsi寄存器:
.loop:
cmp %rsi, %rcx
无论使用何种尺寸,寄存器宽度必须匹配。 32位寄存器写操作始终为零扩展,并写入AMD64中的完整64位寄存器。如果您知道%esi是作为32位值计算或加载的,那么%rsi是零扩展到64位的相同值。