【发布时间】:2019-10-18 16:41:10
【问题描述】:
我在理解这个练习时遇到了问题。我会尽我所能给出我的推理,我希望你们能给我一个想法,每行代码演示了什么。我们使用的程序集是 x86 假设存储在 %rax = x 中的值
xorq %rax, %rax // value stored in %rax: x ^ x = 0
addq $-1, %rax // value stored in %rax: 0 - 1 = -1
movq %rax, %rbx // value stored in %rbx: -1 or 0xFFFFFFFF
shlq $2, %rbx
shrq $1, %rbx // left shift by 3 total, so value stored in %rbx: 0x7fffffff8
addq %rbx, %rax // value stored in %rax: 0x7fffffff9
对于最后一行,我的教授说我们实际上在计算 (TMax-1)-1,我真的不明白。
问题是:
假设 Q3.2 中的 addq 确实执行了,假设我们现在执行了以下指令:
setg %bl
什么值(十六进制,包括前缀)现在存储在 %rbx 中?
我真的不明白 setg 是什么意思(我确实阅读了规范但不知所措)。非常感谢您的帮助!
【问题讨论】: