ARM 标准汇编与 GNU 汇编
前段时间看 arm 的汇编,发现很多有一个小点,但是借来的书上的语法却没有,问同学也
不知道,于是在网上查了一番才发现我书上看到的是 arm 的标准汇编,而有小点的 gnu
的汇编,于是将收集到的资料整理后放到这里来。
GNU 汇编语言结构@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
主要包括三个常用的段:
data 数据段@声明带有初始值的元素
bss 数据段@声明使用 0 或者 null 初始化的元素
text 正文段@包含的指令, 每个汇编程序都必须包含此段
使用.section 指令定义段, 如:
.section .data
.section .bss
.section .text
起始点:
gnu 汇编器使用_start 标签表示默认的起始点, 此外如果想要汇编内部的标签能够被外
部程序访问,
需要使用.globl 指令, 如:.globl _start
使用通用库函数时可以使用:
ld -dynamic-linker /lib/ld-linux.so.2
###############################################
###############################################
##
# 四, 数据传递@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
###############################################
###############################################
##
1, 数据段
使用.data 声明数据段, 这个段中声明的任何数据元素都保留在内存中并可以被汇编程
序的指令读取,
此外还可以使用.rodata 声明只读的数据段, 在声明一个数据元素时, 需要使用标签和
命令:
标签:用做引用数据元素所使用的标记,@它和 c 语言的变量很相似, 它对于处理器是没
有意义的, 它只是用做汇编器试图访问内存位置时用做引用指针的一个位置。