ARM学习笔记12——GNU ARM汇编伪操作
1、.section
1.1、语法格式
.section section_name[,"flags"[,%type[,flag_specific_arguments]]]
1.2、作用
定义一个段,每一个段以段名为开始,以下一个段名或者文件结尾为结束。
ELF格式允许的段标志: a:可分配
w:可写段
x:执行段
1.3、举例
.section .mysection @自定义数据段,段名为“.mysection”
2、预定义段 .text、.data、.bss
2.1、语法格式
.text{subsection}
.data{subsection} @初始化数据段
.bss{subsection}
2.2、作用
.text、.data和.bss将汇编系统预定义的段名编译到相应的代码段、数据段和bss段。
注意:源程序中.bss段应该在.text之前。
2.3、说明
bss段通常是指用来存放程序中未初始化的全局变量的一块内存区域 数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域
2.4、举例
.section .data <initialize data here> .section .bss <uninitialized data here> .section .text .global _start _start: <instruction code goes here>
3、.code16、code32、.thumb、.arm
3.1、语法格式
.code16、code32 .thumb .arm
3.2、作用
用来选择ARM或者Thumb指令集,.thumb伪操作等同于.code16,表明使用Thumb指令类似的.arm等同于.code32
4、.end
4.1、语法格式
.end
4.2、作用
表明源文件的结束,如果该标号之后还有代码,不会被编译到执行文件中
5、.include
5.1、语法格式
.include "filename"
5.2、作用
可以将指定的文件在使用位置处展开,一般是头文件
6、.incbin
6.1、语法格式
.incbin "file"[,skip[,count]]
6.2、作用
可以将原封不动的一个二进制文件编译到当前文件中。其中,skip表明是从文件开始跳过skip个字节开始读取文件,count是读取的字数
7、.if、.else/.endif
7.1、语法格式
.if 条件表达式 代码段1 .else 代码段2 .endif
8、.ifdef,.else和endif
8.1、语法格式
.ifdef 条件表达式 代码段1 .else 代码段2 .endif
9、.macro、.exitm和.endm
9.1、语法格式
.macro 宏名 参数名列表 @伪操作.macro定义一个宏
宏体
.endm @.endm表示宏结束
9.2、说明
如果宏使用参数,那么在宏体中使用该参数时添加前缀“\”。宏定义时的参数还可以使用默认值,可以使用.exitm伪指令来退出宏
9.3、举例
.macro SHIFTLEFT a,b .if \b< MOV \a,\a,ASR #-\b .exitm .endif MOV \a,\a,LSL #\b .endm
10、.byte
10.1、语法格式
.byte 表达式{,表达式}...
10.2、作用
定义单字节
10.3、举例
.byte ,,'s',0x34
11、.short、.hword
11。1、语法格式
.short/.hword 表达式{,表达式}...
11.2、作用
定义双字节数据
11.3、举例
.short 0x1234
12、.long、.word、.int
12.1、语法格式
.long/.word/.int 表达式{,表达式}...
12.2、作用
.long、.word和.int定义4字节数据
13、.quad
13.1、语法格式
quad 表达式{,表达式}...
13.2、作用
.quad定义8字节数据
14、.string/.asciz/.ascii
14.1、语法格式
.string/.asciz/.ascii 表达式{,表达式}...
14.2、作用
.string/.asciz/.ascii定义多个字符串。
注意:ascii伪操作定义的字符串需要自动添加结尾字符'\0'
14.3、举例
.string "abcd","hello"
15、.zero、.space、.skip
15.1、语法格式
.zero <number_of_bytes>
.space/.skip <number_of_bytes> {,<fill_byte>}
15.2、作用
分配number_of_bytes字节的数据空间,.zero伪操作用0填充内存,.space/.skip用值为fill_byte填充内存,若未指定该值,缺省填充0
16、.rept、.endr
16.1、语法格式
.rept 重复次数
数据定义
.endr @结束重复定义
16.2、作用
.rept及.endr用于重复定义伪操作
16.3、举例
.rept
.byte 0x23
.endr
17、.equ、.set
17.1、语法格式
.equ(.set)常量名,表达式
17.2、作用
.equ和.set用于为程序中标号定义名称
17.3、举例
.equ abc @让abc=3
18、.global/.globl
18.1、语法格式
.global/.globl symbol
18.2、作用
.global和.globl用来定义一个全局的符号
19、.extern
19.1、语法格式
.extern label
19.2、作用
.extern用于声明一个外部标号
20、.ltorg、.pool
20.1、语法格式
.ltorg/.pool
20.2、作用
.ltorg和.pool用于声明一个数据缓冲池的开始,它可以分配很大的空间
ARM学习笔记12——GNU ARM汇编伪操作的更多相关文章
- ARM学习笔记11——GNU ARM汇编程序设计
GNU ARM汇编程序设计中,每行的语法格式如下: [<label>:] [<instruction | directive | pseudo-instruction>] @c ...
- ARM学习笔记10——GNU ARM命令行工具
一.编译器arm-linux-gcc 1.用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的: 1.1.预处理阶段 编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使 ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- SQL反模式学习笔记12 存储图片或其他多媒体大文件
目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点: 1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...
- golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题
golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- 并发编程学习笔记(12)----Fork/Join框架
1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...
随机推荐
- java之泛型潜在错误
如果使用带泛型声明的类时,没有传入类型参数,那么这个类型参数默认是声明该参数时指定的第一个上限类型,这个类型参数被称为raw type(原始类型 ). eg: public class Lis ...
- ZOJ 1025 Wooden Sticks(快排+贪心)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 题目大意:机器运送n个木条,每个木条有一个长度和重量.运送第一根木 ...
- Codevs 1191 数轴染色
1191 数轴染色 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 在一条数轴上有N个点,分别是1-N.一开始所有的点都被染成黑色. ...
- 九度OJ 1107 搬水果 -- 哈夫曼树 2011年吉林大学计算机研究生机试真题
题目地址:http://ac.jobdu.com/problem.php?pid=1107 题目描述: 在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果 ...
- java.util.Dictionary源码分析
Dictionary是一个抽象类,Hashtable是它的一个子类. 类的声明:/** The <code>Dictionary</code> class is the abs ...
- EF 存储过程(上)
目前,EF对存储过程的支持并不完善.存在以下问题:> EF不支持存储过程返回多表联合查询的结果集.> EF仅支持返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况.&g ...
- Linux系统的启动流程以及做个小小的Linux
内核的作用 进程管理:进程间切换 内存管理:内存空间分割为内核空间和用户空间 IO管理:对底层硬件的使用必须由内来实现,不能由用户空间进程来实现 文件系统管理 ...
- NFS,FTP
一. NFS1. NFS简介NFS全称是network file systemNFS允许一个系统在网络上与他人共享目录和文件.通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件. 假 ...
- 网站开发常用jQuery插件总结(八)标签编辑插件Tagit
一.Tagit插件功能 提高网站交互性,增加用户体验.至于其它的功能,还真没有.用一个input text就可以替换了它.但是text没有输入提示功能,而tagit拥有这个功能.官方示例如下图: 将关 ...
- [C#]递归遍历文件夹
/// <summary> /// 递归获取文件夹目录下文件 /// </summary> /// <param name="pathName"> ...