cfi_ *对我来说并不清楚

时间:2015-02-18 10:15:44

标签: c gcc assembly x86-64

更新

我可以在那里得到部分答案: http://www.x86-64.org/documentation/abi.pdf

第58页。 Pffeeeew汇编是一种强硬的语言:)

上下文

现在学习GAS装配2-3天。 Linux 64位。

GCC 4.8.2

使用无优化(-O0 -march = native)进行编译,以查看生成的基本程序集。

问题:

我的解释(下方)是对吗?

我的所有C转换代码都以与

相同的方式组成
.cfi_startproc
pushq   %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq    %rsp, %rbp
.cfi_def_cfa_register 6
subq    $16, %rsp

#my code here

movl    $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc

我试着解释一下步骤:

1)

我读到cfi_def_cfa_offset 在64位arch上为16。这是一条规则(对吗?)。

2)

cfi_offsetcfi_def_cfa_register与值6“关联”。为什么?

3)

据我所知,我们使用subq跳过了cfi_def_cfa_offset 16个字节。

4)

但是为什么cfi_def_cfa 7, 8到底?它对我没有意义,因为8无处可去。顺便说一句,为什么不cfi_def_cfa 15, 16

由于

0 个答案:

没有答案