本文是原创,转载请注明出处

本文链接:http://blog.sina.com.cn/s/blog_574d08530100hzie.html

1.符号定义伪操作

操作符      语法格式            说明

.equ       .equ symbol,expr    将symbol定义为expr

.set       .set symbol,expr    和equ相同(.set=.equ)

.equiv     .equiv symbol        将symbol定义为expr,若symbol已定义则出错

.global    .global symbol       将symbol定义为全局标号

.globl     .globl symbol        和.global相同(.globl=.global)

.extern    .extern symbol       声明symbol为一个外部变量

2.数据定义伪操作

.byte      .byte expr {,expr}…  分配一段字节内存单元,并用expr初始化字节内存单元(8bit)

.hword     .bword expr {,expr}… 分配一段半字内存单元,并用expr初始化半字内存单元 (16bit)

.short     .short expr {,expr}… 同.hword(16bit)

.word      .word expr {,expr}…  分配一段字内存单元,并用expr初始化字内存单元(32bit)

.int       .int expr {,expr}…   同.word(32bit)

.long      .long expr {,expr}…  同.word(32bit)

.ascii  .ascii expr{,expr}…分配一段字符串内存单元,并用expr初始化字符串内存单元(非零结束符)

.asciz  .asciz expr{,expr}…分配一段字符串内存单元,并用expr初始化字符串内存单元(零结束符)

.string    .string expr {,expr}…  同.asciz(零结束符)

.quad      .qua expr {,expr}…   分配一段双字内存单元,并用expr初始化双字内存单元

.octa      .octa expr{,expr}…   分配一段四字内存单元,并用expr初始化四字内存单元

.float  .float expr{,expr}…  分配一段字内存单元,并用32位IEEE单精度浮点数expr初始化内存单元

.single .single expr{,expr}… 同.float

.double .double expr{,expr}… 分配一段双字内存单元,并用64位IEEE双精度浮点数expr初始化内存单元

.fill   .fill repeat{,size}{,value} 用size个字节value填充repeat次(size默认为1,value默认为0)

.zero   .zreo size                  用0填充size个字节的内存单元

.space  .space size{,value}         用value填充size个字节的内存单元(value默认为0)

.skip   .space size{,value}         同.space

.ltorg  .ltorg                      声明一个数据缓冲池(literal pool)

3.汇编与反汇编代码控制伪操作

.arm        .arm                   定义一下代码使用ARM指令集编译

.code 32    .code 32               作用同.arm

.thumb      .thumb                 定义一下代码使用Thumb指令集编译

.code 16    .code 16               作用同.thumb

.section    .section expr          定义域中包含的段。expr可以使.text,.data.,.bss

.text       .text {subsection}     将定义符开始的代码编译到代码段或代码子段(subsection)

.data       .data {subsection}     将定义符开始的代码编译到数据段或数据子段(subsection)

.bss        .bss {subsection}      将变量存放到.bss段或.bss的子段(subsection)

.align   .align{alignment}{,fill}{,max} 通过用零或指定的数据进行填充来使当前位置与指定边界对齐

.balign  .balign{alignment}{,fill}{,max}作用同.align

.org        .org offset{,expr}     指定从当前地址加上offset开始存放代码,并且从当前地址到当前

地址加上offset之间的内存单元,用零或指定的数据进行填充

org=origin

其他汇编与反汇编

.end       .end       标记汇编文件的结束行,即标记后的代码不做处理

.err       .err       使编译结果产生错误报告

.eject     .eject     在汇编符号列表文件中插入一分页符

.list      .list      .产生汇编列表(从.list到.nolist)

.nolist    .nolist    汇编列表结束处。再次使用.list产生汇编列表

.title     .title "title_name"  使用heading作为标题(位于汇编列表文件中文件名下一行)

.sbttl     .sbttl "title_name"  使用heading作为子标题(位于.title标题下一行)

.print     .print string        打印输出信息到标准输出

4.预定义控制操作

.if                              条件判断语句

.else                            条件判断语句

.endif                           条件结束语句

.macro                           标识宏定义的开始

.endm                            标识宏定义的结束

.exitm     .exitm                中途跳转出宏

.include   .include "file_name"  包含文件标识

参考文章

1.参看更多更详细的GNU ARM 汇编 伪操作()的方法

第一步:打开网页: http://sourceware.org/binutils/

第二步:找到Documentation 这里,如下图:

看到是2.20

第三步:打开网页http://sourceware.org/binutils/docs-2.20/as/  (如果你看到的是2.23或者别的什么,说明文档更新了,把2.20换成更新的版本序号)

第四步:找到Directives这里,这里就是你要找的伪操作,这里面全是介绍,如下图

GNU ARM汇编伪操作(Directives) 命令集相关推荐

  1. GNU ARM 汇编指令[转载]

    http://blog.sina.com.cn/s/blog_59b189220100au1k.html 第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程 ...

  2. ARM学习-GNU ARM汇编

    目录 1.GNU汇编语言语句格式 2.汇编程序中的标号symbol(或label) 3.GNU汇编程序中的分段 3.1 .section伪操作 3.2 汇编系统预定义的段名 4.GNU汇编语言定义入口 ...

  3. linux arm 汇编学习,如何在LINUX平台上学习GNU ARM汇编

    本例说明如何在LINUX平台上学习GNU ARM汇编. 1.软件环境 vmware 5.0 + redhat 9.0 + skyeye 1.2.4 + arm-elf 工具 2. 源文件 a.s -- ...

  4. GNU ARM汇编--(二)汇编编译链接与运行

    GNU的汇编器是GNU Tools的一部分,可以用来ARM的汇编语言源代码编译为二进制文件.关于GNU汇编器的介绍可以搜索<GNU Assembler Manual>.这里我们只是做一个简 ...

  5. GNU ARM汇编--(五)中断汇编之嵌套中断处理

    在上篇<GNU ARM汇编--(四)中断汇编之非嵌套中断处理>中分析了最简单的中断处理的写法,再看TQ2440启动代码中的中断向量表的写法就一目了然了.今天抽时间对嵌套中断处理的学习做下整 ...

  6. arm gnu linux系统,GNU ARM汇编

    在大学的时候,汇编就是学的很烂.一是对汇编这门语言没概念,二是那些指令集很难记清楚,用的机会也少,自然学的不好.但是现在觉得相当有必要重头学习一下汇编.部分原因我在上一篇写完设备模型的总结时提到了而. ...

  7. arm汇编 调用linux中断,GNU ARM汇编(四)中断汇编之非嵌套中断处理

    原标题:GNU ARM汇编(四)中断汇编之非嵌套中断处理 在写这篇blog之前,不得不感慨一句:纸上得来终觉浅,绝知此事要躬行.作为EE出身的,虽然好久好久没用汇编写 的中断了,但自我感觉对中断的理解 ...

  8. GNU ARM汇编--(十七)u-boot的makefile和mkconfig解读

    自己写的bootloader可以引导kernel了,我以为曾经神秘的u-boot代码将变得毫无挑战,然事实表明u-boot作为优秀的开源代码,阅读起来还是很有挑战的,值得一读! 阅读碰到的头等问题:M ...

  9. GNU ARM汇编--(二十)总结

    从这个系列第一篇开始,那是4月22号,到今天做一个总结,已经有7个多月的时间了,利用业余时间学习自己感兴趣的东西,进度比较慢,也是比较累的,但收获也是很多的. 这个系列之所以写出来,是因为自己在玩li ...

最新文章

  1. Android程序ToDoList增加配置项页面
  2. 基于用户投票的排名算法(三):Stack Overflow
  3. java.io.EOFException: Chunk stream does not exist at page: 0
  4. 从ResultSet 说起
  5. MySQL第41题怎么评分_mysql练习题1-41
  6. Set和Map集合的比较
  7. devops_面向内向的人的DevOps
  8. map函数python返回值,Python中map函数使用
  9. [Ext JS 4] MVC 应用程序框架
  10. php的前端环境,PHP中的环境变量
  11. 一个计算机高手的成长zz
  12. 21.5 英寸 iMac 供应减少:是新品发布的节奏吗?
  13. Multisim14.0详细安装教程
  14. led伏安特性实验误差分析_电阻元件的伏安特性 电阻元件的伏安特性实验结果误差分析...
  15. SQL server 插入日期处理
  16. 局域网监控软件——邮件监控
  17. win7电脑怎么伪装ip地址【系统天地】
  18. Python 爬虫自动访问点击刷CSDN博客文章阅读量
  19. 深入浅出再谈Unity内存泄漏
  20. 新生研讨课--无人机技术

热门文章

  1. 瀑布流布局JavaScript实现
  2. 2019年6月26 突然想到的代码优化
  3. 三维重建PCL:点云单侧面正射投影
  4. undefined reference to “boost” in Qt—Ubuntu
  5. Architecture:话说科学家/工程师/设计师/商人
  6. Doc2Vec,Word2Vec文本相似度 初体验。
  7. iOS开发之FMDB
  8. git的常用的使用方法
  9. scala学习手记26 - 重用函数值
  10. Decommissioning a Domain Controller 降域控