在汇编时从32位变为64位

时间:2016-09-21 06:32:04

标签: assembly 64-bit

我们假设我们在这样的大会中有一条线:

Mango : John(4), Tom(2), Greg(1)... 
Banana: Tom(5), John(2), ...

我知道一个寄存器用于32位,另一个用于64位。但是有可能将.loop: cmp %esi, %rcx 转换为32位,以便在尝试运行代码时不会出错吗?我知道我可以使用%rcx,但我想知道是否可以使用ecx

1 个答案:

答案 0 :(得分:1)

您不想使用32位%ecx寄存器,而是使用64位%rsi寄存器:

.loop:
    cmp %rsi, %rcx

无论使用何种尺寸,寄存器宽度必须匹配。 32位寄存器写操作始终为零扩展,并写入AMD64中的完整64位寄存器。如果您知道%esi是作为32位值计算或加载的,那么%rsi是零扩展到64位的相同值。

相关问题