У меня проблемы с пониманием этого упражнения. Я сделаю все возможное, чтобы высказать свое мнение, и я надеюсь, что вы, ребята, сможете дать мне представление о том, что демонстрирует каждая строка кода. Используемая нами сборка 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, чего я действительно не получаю.
Вопрос в следующем:
Предполагая, что addq из Q3.2 выполнил, скажем, теперь мы выполнили следующую инструкцию:
setg %bl
Какое значение (в шестнадцатеричном формате, включая префикс) теперь хранится в% rbx?
Я действительно не понимаю, что означает setg (я прочитал спецификацию, но потерял). Большое спасибо за помощь!