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. 02_Jquery_02_元素选择器

    [简述] 元素选择器就是通过元素名来查询元素 $("elementName")这里就可以通过元素名来获取jquery元素了. 但与id选择器不同的是,名称相同的元素有很多,所以获取 ...

  2. 贪心算法:旅行商问题(TSP)

    TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干个城市,任何两个城市之间 ...

  3. BSTR共享内存问题

    BSTR bstrName = OLESTR("Test String"); BSTR b1 = bstrName; BSTR b2 = bstrName; bstrName = ...

  4. SGU 解题报告

    Volume 1 Volume 2

  5. Jquery环境搭建前言

  6. 关于C# Winform 程序开机自动启动

    1.程序运行时调用下面方法即可. /// <summary> /// 设置开机自动启用 /// </summary> private void SetAutoStart() { ...

  7. 调度思路+EurekaServer获得当前机器的instanceid

    调度思路 概念 Build 一次完整的构建 整个流水线 Task(BuidStep) 流水线中的某一个步骤单元 先假设对于一个Build(流水线)而言里面所有Task是串行执行的 并且各Task之间不 ...

  8. xe6+firedac连接sybase

    一.Win7 X64系统安装sybase odbc: 1.  下载对应包至c:\system_odbc(文件夹名自己取,在后面注册表内容需要用到): 2.  将值信息写入到注册表内: Windows ...

  9. HTML -- 元素和属性

    HTML -- 元素 HTML元素是从开始标签到结束标签之间的代码,如: <!-- 加粗标签 --> <b>一些元素</b> <!-- 换行 --> & ...

  10. iOS开发之国际化

    iOS 国际化.根据系统不同的语言自动切换. 首先.选择项目 Add new file -->iOS -->Resource -->Strings File  . 命名为Locali ...