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汇编伪操作的更多相关文章

  1. ARM学习笔记11——GNU ARM汇编程序设计

    GNU ARM汇编程序设计中,每行的语法格式如下: [<label>:] [<instruction | directive | pseudo-instruction>] @c ...

  2. ARM学习笔记10——GNU ARM命令行工具

    一.编译器arm-linux-gcc 1.用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的: 1.1.预处理阶段 编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使 ...

  3. Ext.Net学习笔记12:Ext.Net GridPanel Filter用法

    Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...

  4. SQL反模式学习笔记12 存储图片或其他多媒体大文件

    目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点:     1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...

  5. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  6. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  7. Python3+Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记12(js操作应用:滚动条 日历 内嵌div)'''from ...

  8. springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定

    springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...

  9. 并发编程学习笔记(12)----Fork/Join框架

    1. Fork/Join 的概念 Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此joi ...

随机推荐

  1. 04_过滤器Filter_03_多个Filter的执行顺序

    [Filter链] *在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为一个Filter链. *web服务器根据Filter在web.xml中的注册顺序,决定先调用哪个Fi ...

  2. hrbust 1328 相等的最小公倍数(数论)

    Description 定义An为1,2,-,n的最小公倍数,例如,A1 = 1,A2 = 2,A3 = 6,A4 = 12,A5 = 60,A6 = 60. 请你判断对于给出的任意整数n,An是否等 ...

  3. PHP CURL参数详解

    curl用法:cookie及post 一.cookie用法 <?php $cookie_jar = tempnam('./tmp','cookie'); // login $c=curl_ini ...

  4. MinGW 仿 linux 开发环境

    MinGW 默认安装 MSYS.通常打开的 MinGW Shell 其实 MSYS,MinGW 作为一个组件存在. MSYS -- Minimal SYStem,是一个 Bourne Shell 解释 ...

  5. Web Service 的服务端的引用

    1.先说说服务端的引用 先写一个Web Service 的文件  上图 创建一个web 项目或者网站  然后添加新项 创建一个web服务 得到 下面的页面 然后运行起来 然后复制下地址 接下来创建另一 ...

  6. centOS 6.4 vsftpd 安装配置

    参考  http://blog.csdn.net/wocjj/article/details/7418944   配置说明 http://www.cnblogs.com/redhatlinux/arc ...

  7. hadoop2——新MapReduces——yarm详解

    YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个Nod ...

  8. MySQL中的max_connections和max_user_connections 及 MySQL服务器最大连接数的合理设置

    max_connections 是指整个mysql服务器的最大连接数: max_user_connections 是指每个数据库用户的最大连接数,比如:虚拟主机可以用这个参数控制每个虚拟主机用户的数据 ...

  9. ThreadLocal学习

    1.简介: 类ThreadLocal<T>,为变量提供了线程本地化副本.对于用ThreadLocal维护的变量,当前线程中的副本不同于它在其他线程中的副本,每个线程通过ThreadLoca ...

  10. EasyUI 调用getSelections方法只能获取到一行的原因

    $('#tt').datagrid({ url: 'GetDataJosn', title: 'DataGrid', width: 800, height: 300, pageSize: 10, id ...