計算機組織與結構›Ch1 指令集架構(ISA)
第 2 題/共 39 題
◀ CC 2/39
2. ISA、Addressing Mode、Disassembly、x86-64
#CC-01-002難ISAAddressing ModeDisassemblyx86-64

假設有下列 C 語言片段的原始碼,以及該程式碼在 x86-64 平台上編譯後物件檔的反組譯(disassembly)結果。假設在 func(i, up) 中:i 存於 %rdi,up 存於 %rsi。請回答 CN 的值以及 struct np_struct 的完整宣告。

HINT:對於指令 lea (a, b, num), c,其運算結果 (b*num + a) 會被搬移到 c。

反組譯結果:

mov    0x120(%rsi), %ecx
add    (%rsi), %ecx
lea    (%rdi,%rdi,4), %rax
lea    (%rsi,%rax,8), %rax
mov    0x8(%rax), %rdx
movslq %ecx, %rcx
mov    %rcx, 0x10(%rax,%rdx,8)
retq

對應的 C 程式碼:

extern struct np_struct;
typedef struct {
    int fst;
    nt_struct a[CN];
    int lst;
} u_struct;

void func(long i, u_struct *up) {
    int n = up->fst + up->lst;
    np_struct *np = &up->a[i];
    np->x[np->idx] = n;
}
📄 台大114
跳轉到第題
▤完整推導請見《WH 資工筆記 · 計算機組織與結構》Ch1 指令集架構(ISA)
本章題號 · 1–20 / 39