clang - 无用的推rax和pop rcx?

时间:2017-08-19 20:24:43

标签: assembly clang x86-64 disassembly abi

今天,在拆解我之前构建的一些二进制文件时(clang x86_64),我遇到了一些看似无用的东西。

_baz:                                   ## @baz
    .cfi_startproc
## BB#0:
    pushq   %rax ; What?
Ltmp7:
    .cfi_def_cfa_offset 16
    leaq    (%rsp), %rax
    movq    %rsi, (%rax)
    xorl    %edx, %edx
    movq    %rax, %rsi
    callq   _something
    movq    %rax, %rdi
    callq   _something_else
    movl    (%rax), %eax
    popq    %rcx ; What?
    retq
    .cfi_endproc

我看到rax正在保存,之后又恢复为rcx,我没有看到这样做的重点,因为rax是一个临时注册(它不是& #39;似乎需要保存在这里)和rcx(另一个临时寄存器,也适用于第四个寄存器传递的arg)似乎从未在这里使用过。

0 个答案:

没有答案