1
假設 %rax
暫存器內含值為 0x100
,而且 %rbx
暫存器內含值為 0x10
,那麼在 movq 2(%rax,%rbx,4), %rcx
這道指令執行後,%rcx
暫存器內含值應該為何?
作答區
Q2 = ?
(a)
0x142(b)
0x112(c)
0x124(d)
存於記憶體位址 0x124
的 64-bit 數值(e)
存於記憶體位址 0x142
的 64-bit 數值(f)
存於記憶體位址 0x112
的 64-bit 數值(g)
沒有固定結果2
考慮以下組合語言程式:
leaq (%rax, %rbx), %rcx
subq %rax, %rcx
subq %rbx, %rcx
當執行後,狀態碼 ZF 和 SF 的可能數值為何?
作答區
Q5 = ?
(a)
ZF = 0, SF = 0(b)
ZF = 1, SF = 0(c)
ZF = 0, SF = 1(d)
ZF = 1, SF = 13
考慮以下 C 程式:
long foo(long x, long y) {
while (x >= 0) {
y -= 2; x += y;
}
return x;
}
在忽略 integer overflow/underflow 的前提,在下方找出可能的組合語言輸出。
foo:
cmpq $0, %rdi
jl end
subq $2, %rsi
addq %rsi, %rdi
jmp foo
end:
movq %rdi, %rax
ret
foo:
cmpq $0, %rdi
jge end
start:
subq $2, %rsi
addq %rsi, %rdi
jge start
end:
movq %rdi, %rax
ret
foo:
addq $0, %rdi
jmp middle
start:
subq $2, %rsi
addq %rsi, %rdi
middle:
jge start
end:
movq %rdi, %rax
ret
作答區
Q3 = ?
(a)
X Y(b)
X Z(c)
Y Z(d)
Y