用于什么是GNU汇编

用于什么是GNU汇编

本文介绍了用于什么是GNU汇编(GAS)CFI指令?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有似乎每行后.CFI指令,也有这些前宽varities, .cfi_startproc .cfi_endproc 等。。

There seem to be a .CFI directive after every line and also there are wide varities of these ex.,.cfi_startproc , .cfi_endproc etc.. more here.

    .file   "temp.c"
    .text
.globl main
    .type   main, @function
main:
.LFB0:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    movq    %rsp, %rbp
    .cfi_offset 6, -16
    .cfi_def_cfa_register 6
    movl    $0, %eax
    leave
    ret
    .cfi_endproc
.LFE0:
    .size   main, .-main
.globl func
    .type   func, @function
func:
.LFB1:
    .cfi_startproc
    pushq   %rbp
    .cfi_def_cfa_offset 16
    movq    %rsp, %rbp
    .cfi_offset 6, -16
    .cfi_def_cfa_register 6
    movl    %edi, -4(%rbp)
    movl    %esi, %eax
    movb    %al, -8(%rbp)
    leave
    ret
    .cfi_endproc
.LFE1:
    .size   func, .-func
    .ident  "GCC: (Ubuntu 4.4.1-4ubuntu9) 4.4.1"
    .section    .note.GNU-stack,"",@progbits

我没有得到这些的目的。

I didn't get the purpose of these.

推荐答案

我知道了代表并是一个GNU AS扩展到管理呼叫帧。从:

I've got a feeling it stands for Call Frame Information and is a GNU AS extension to manage call frames. From DeveloperWorks:

在某些架构,异常
  处理必须在呼叫管理
  帧信息指令。这些
  指令在装配用于
  直接异常处理。这些
  指令都可以在Linux上
  电力,如果出于任何原因(便携
  的code基,例如)时,
  GCC产生的异常处理
  信息是不充分的。

它看起来像这些是根据需要进行异常处理的一些平台上产生的。

It looks like these are generated on some platforms depending on need for exception handling.

如果您正在寻找禁用这些,请参阅。

If you are looking to disable these, please see David's answer.

这篇关于用于什么是GNU汇编(GAS)CFI指令?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 19:34