数一数 mov 有多少条
下面这段是 clang -S -O0 -masm=intel 在 x86-64 上对那三行 C 的真实输出(只删掉了 .cfi_* 伪指令)。运行这段程序,填写它打印出来的结果。
ASM = """ push rbp
mov rbp, rsp
mov dword ptr [rbp - 4], edi
mov dword ptr [rbp - 8], esi
mov eax, dword ptr [rbp - 4]
add eax, dword ptr [rbp - 8]
mov dword ptr [rbp - 12], eax
mov eax, dword ptr [rbp - 12]
add eax, 3
pop rbp
ret"""
lines = [l.strip() for l in ASM.strip().splitlines() if l.strip()]
movs = 0
adds = 0
for l in lines:
if l.startswith("mov"):
movs = movs + 1
if l.startswith("add"):
adds = adds + 1
print(str(movs) + "/" + str(adds) + "/" + str(len(lines)))
全部评论