嵌入式开发|ARM中的汇编指令解读(“.text“、“.data“、“.bss“,“.ascii“、“.byte“、“.short“、“.int“、“.long“、“.word“、“.quad“)
一. 带点的(一般都是ARM GNU伪汇编指令) 1. “.text”、".data"、".bss"
依次表示的是
“以下是代码段”,
“以下是初始化数据段”,
“以下是未初始化数据段”。
2.".global"
定义一个全局符号,通常是为ld使用。比如经常看到的
.global _start
3.".ascii"、".byte"、".short"、".int"、".long"、".word"、".quad"
定义一个字符串,并为它分配空间
定义一个字节,并为它分配空间,占单字节,0x34
定义一个短整型,并为它分配空间,占双字节,0x1234
定义一个整型,并为它分配空间,占四字节,0x12345678
定义一个长整型,并为它分配空间,占四字节,0x12345678
定义一个字,并为它分配空间,
定义一个,并为它分配定义,占八字节,…
比如
.long 0x22011110//BWSCON
.long 0x00000700//BANKCON0
…
4.".abort"
停止汇编
5.".align"
.align absexpr1,absexpr2
以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16或32. 第二个表达式值表示填充的值
6.".if .else .endif"
.if
.else
.endif:支持条件预编译
7.".include"
.include “file”:包含指定的头文件, 可以把一个汇编常量定义放在头文件中
8.".comm"
.comm symbol, length:
在bss段申请一段命名空间,该段空间的名称叫symbol, 长度为length. Ld连接器在连接会为它留出空间
9.".equ"
.equ symbol, expression: 把某一个符号(symbol)定义成某一个值(expression).该指令并不分配空间,相当于c语言中的#define。例如
.equ aaa,0x20000000
详细参考: 【嵌入式开发|ARM中的汇编指令解读(“.text“、“.data“、“.bss“,“.ascii“、“.byte“、“.short“、“.int“、“.long“、“.word“、“.quad“)】详细参考链接
推荐阅读
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- 嵌入式-外设|DDR3基础详解
- ffmpeg|从零开始仿写一个抖音App——基于FFmpeg的极简视频播放器
- #|Multimedia
- USB转串口|USB转四串口芯片CH9344
- python|Python的DEBUG LOG