我试图在最后弄清楚这段代码的RAX价值。
start:
mov $1024, %rax
mov $4096, %rbx
mov $2048, %rcx
xor %rdx, %rdx
sub %rcx, %rbx
cmp %rbx, %rax
jge loopa
jmp loopb
loopa:
cmp $4, %rdx
jg end
inc %rdx
loopb:
xchg %rax, %rbx
idiv %rbx
add %rdx, %rax
imul %rcx
jmp loopa
end:
我正在做的是跟随寄存器值,在开始RAX定义为1024,RBX定义为4096,RCX定义为2048,但是代码在RDX上使用XOR,稍后在loopa中比较它,但我不# 39; t似乎理解RDX初始值,因为它没有在代码中的任何地方定义,我缺少什么?
答案 0 :(得分:1)
此处rdx
的初始值并不重要,因为xor %rdx, %rdx
会将rdx
的所有位设置为零。它在功能上等同于mov $0, %rdx
。