数一数 mov 有多少条

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

下面这段是 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)))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论