ARM汇编.global .extern 和.text

在ARM汇编中,常搞不清.global和.extern的区别,下面就简要阐述一下这两个的区别。

1>.global

.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用。
.global _start 让_start符号成为可见的标示符,这样链接器就知道跳转到程序中的什么地方并开始执行。linux寻找这个 _start标签作为程序的默认进入点。

在汇编和C混合编程中,在GNU ARM编译环境下,汇编程序中要使用.global伪操作声明汇编程序为全局的函数,意即可被外部函数调用,同时C程序中要使用extern声明要调用的汇编语言程序。

2>.extern

.extern XXXX 说明xxxx为外部函数,调用的时候可以遍访所有文件找到该函数并且使用它。

作者:messi1111
来源:CSDN
原文:https://blog.csdn.net/u014250462/article/details/78169654
版权声明:本文为博主原创文章,转载请附上博文链接!

3>
.section .data
汇编程序中以.开头的名称并不是指令的助记符,不会被翻译成机器指令,而是给汇编器一些特殊指示,称为汇编指示(Assembler Directive)或伪操作(Pseudo-operation),由于它不是真正的指令所以加个“伪”字。.section指示把代码划分成若干个段(Section),程序被操作系统加载执行时,每个段被加载到不同的地址,操作系统对不同的页面设置不同的读、写、执行权限。.data段保存程序的数据,是可读可写的,相当于C程序的全局变量。本程序中没有定义数据,所以.data段是空的。

.section .text
.text段保存代码,是只读和可执行的,后面那些指令都属于.text段。

你可能感兴趣的:(ARM+Linux)