如何解决了解一些'helper'gnu-as指令
我用以下两行代码编译了程序main.c
,以查看使用什么指令gcc
/ gas
添加到未优化的汇编文件中,使用:
gcc -o main.s main.c -S
我可以在gas directive页上查找每个指令的简明描述,但希望有人可以为其中一些指令提供更多的上下文信息,以及它的实际用法(例如,在{{ 1}}或gdb
或任何下游)。这是完整的装配文件,其中包含以下相关项目:
linker
-
.file
:根据,这似乎已经过时了。该声明将来可能会消失:仅与旧.file "main.c" .text .globl main .type main,@function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6,-16 movq %rsp,%rbp .cfi_def_cfa_register 6 movl $4,-8(%rbp) movl $6,-4(%rbp) movl -8(%rbp),%edx movl -4(%rbp),%eax addl %edx,%eax popq %rbp .cfi_def_cfa 7,8 ret .cfi_endproc .LFE0: .size main,.-main .ident "GCC: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0" .section .note.GNU-stack,"",@progbits
程序兼容。 em>。但是鉴于它仍然存在,目前在何处或如何使用它?
-
.ident
:这似乎和as
一样。除了提供有关发出命令的“ gcc”的帮助者信息之外,这还用于其他用途吗? -
.section .note...
:我见过gcc --version
,.section .text
,.section .bss
,...但是我从未遇到过.section .text
,并且执行ctrl-f搜索.note
在此页面上什么也没有。这行与这三个参数有什么关系?还有note
吗? -
.size
:给定指令不占用任何空间,这使我们在@progbits
-main
中的第一条语句的长度减去最后一条语句{{ 1}},即pushq %rbp
函数的长度。但是,这又是什么用途?另外,它在ret
页面上说只允许在.def / .endef对中使用。,但这不是在这些对中,对吗? -
main
-什么是as
,.section .text.startup,"ax",@progbits
看起来意味着可以分配和执行,但是text.startup
是什么?在哪里?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。