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. 24种设计模式--组合模式【Composite Pattern】

    大家在上学的时候应该都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,我们上学那会儿这一章节是必考内容,左子树,右子树,什么先序遍历后序遍历什么,重点就是二叉树的的遍历,我还记得当时老师就 ...

  2. jQuery插件综合应用(一)注册

    一.介绍 注册和登录是每个稍微有点规模的网站就应该有的功能.登陆功能与注册功能类似,也比注册功能要简单些.所以本文就以注册来说明jQuery插件的应用. jQuery插件的使用非常简单,如果只按照jQ ...

  3. ubuntu 下安装软件,卸载,查看已经安装的软件

    参考网址:http://wiki.ubuntu.org.cn/UbuntuSkills 一般的安装程序用三种: .deb 和.rpm 这两种安装文件 .bundle 这是二进制的安装文件 而 tar. ...

  4. linux压缩与解压缩 tar命令

    #压缩tar -czvf ***.tar.gz  filetar -cjvf ***.tar.bz2 file#解压缩tar -xzvf ***.tar.gz filetar -xjvf ***.ta ...

  5. hadoop1 和haddop2 mapperreducer的wordcount详解

    转 mapreduce中wordcount详细介绍(包括hadoop1和hadoop2版本) 发表于1年前(2014-04-24 10:08)   阅读(1458) | 评论(0) 1人收藏此文章, ...

  6. C#黑白棋制作~

    前些天自己复习一下C#语言 做了个黑白棋,望大家看一下,可能有些bug嘿嘿 链接如下 http://files.cnblogs.com/files/flyingjun/%E9%BB%91%E7%99% ...

  7. C# 中经常用到的HTTP请求类,已封装get,post,delete,put

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  8. Controllers, Actions 和 Action Results

    Controllers, Actions 和 Action Results 原文:Controllers, Actions, and Action Results作者:Steve Smith翻译:姚阿 ...

  9. Re-installation failed due to different application signatures./package name has exist

    http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html

  10. xHtml+css学习笔记

    第一节 xHTML规范 *文档方面 -必须定义文档类型(DTD)和名字控件 *标签方面 -所有标签均要小写.关闭.合理嵌套.ID不能重复 -标签属性药有值,属性值要加印号且不能为空 -图片一定要加上a ...