`
xp9802
  • 浏览: 1205014 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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<0 

MOV \a,\a,ASR #-\b 

.exitm 

.endif 

MOV \a,\a,LSL #\b 

.endm
复制代码

10、.byte

  10.1、语法格式

    

.byte 表达式{,表达式}... 

  10.2、作用

    定义单字节

  10.3、举例

    

.byte 1,2,'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 3 
.byte 0x23
.endr

17、.equ、.set

  17.1、语法格式

    

.equ(.set)常量名,表达式 

  17.2、作用

    .equ和.set用于为程序中标号定义名称

  17.3、举例

    

.equ abc 3     @让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用于声明一个数据缓冲池的开始,它可以分配很大的空间

1
0
分享到:
评论
1 楼 biblioma 2014-02-10  
谢谢分享,比较详细

相关推荐

    GNU ARM汇编伪指令

    总之,GNU ARM汇编伪指令是增强ARM汇编程序功能和可读性的关键元素,它们使程序员能够更有效地编写、组织和控制代码,尤其在需要直接操作硬件的低级编程中发挥着重要作用。理解并熟练运用这些伪指令是成为高效ARM...

    ARM汇编伪指令与伪操作ARM嵌入式系统结构与编程PPT学习教案.pptx

    6.4 GNU ARM汇编伪操作 GNU ARM汇编是GCC编译器支持的ARM汇编语言扩展,提供了更多与GNU工具链兼容的特性,如预定义宏、变量声明、条件编译等。 在实际编程中,理解并灵活运用这些伪指令和伪操作是编写高效且易于...

    GNU ARM 汇编程序设计快速入门

    在描述中提到,GNU ARM汇编程序设计会使用一些特定的伪指令,如: - `.equ`: 定义符号常量,如`.equ MY_CONSTANT, 10` - `.word`: 定义字数据,如`.word 0x12345678` - `.ascii`: 输入字符串,如`.ascii "Hello, ...

    嵌入式体系结构及接口技术:第6章 ARM汇编伪指令与伪操作2.ppt

    3. **GNU ARM汇编伪操作**: - GNU ARM汇编器支持的伪操作可能更为广泛,包括了GCC和其他GNU工具链的特性。这些伪操作可能涉及到C语言集成、调试信息生成、链接时优化等更高级的编程需求。 通过了解和熟练掌握这些...

    GNU—ARM汇编入门

    2. **GNU ARM 汇编伪指令** 伪指令并不直接对应机器指令,而是编译器或汇编器处理的特殊指令,用于控制程序的布局和数据的分配。 - `.ascii` 和 `.asciz` 用于定义字符串,前者分配存储空间,后者不分配。 - `....

    嵌入式体系结构及接口技术:第6章 ARM汇编伪指令与伪操作1.ppt

    6.3 GNU ARM汇编伪操作 GNU ARM汇编器(as)支持更多的伪操作,如: - `.type` 用于指定符号的类型,如 `.type myFunction, %function`。 - `.size` 用于指定符号的大小,如 `.size myFunction, .-myFunction`。 - `...

    GNU ARM汇编指令介绍

    GNU ARM汇编器作为一款强大的汇编工具,不仅支持标准的ARM指令集,还提供了一系列特有的伪指令和功能,极大地提升了开发效率与程序的可读性。该汇编器的相关文档可以在GNU工具集的手册中找到,通常位于安装目录下的`...

    GNU_ARM汇编语法

    GNU汇编语法是GNU工具套件之一,用于将ARM汇编源代码转换成二进制对象文件。该汇编器的详细资料请参见GNU Assembler Manual,本文是该手册的摘要。 汇编语法基础 GNU汇编器支持多种架构的CPU,而不仅仅是ARM。因此...

    arm汇编手册中文版(chm).zip_ARM 汇编_arm 汇编_mmx_汇编_汇编chm

    ARM汇编的语法包括指令、寄存器、寻址模式和伪指令等元素。常见的ARM汇编指令有数据处理指令(如ADD、SUB)、分支指令(如B、BL)、加载和存储指令(如LDR、STR)以及浮点运算指令(对于支持VFP的处理器)。 MMX...

    GNU ARM 汇编指令快速参考

    GNU ARM汇编器是针对ARM架构设计的一款强大工具,广泛应用于嵌入式系统开发、操作系统底层编程等领域。本篇文章将对ARM汇编语言的基本指令及常用表达方式进行详细介绍,帮助读者快速掌握GNU ARM汇编器的使用方法。 ...

    GNU环境ARM汇编详细说明.docx

    ### GNU环境下的ARM汇编语言深入解析 #### 汇编语言在GNU环境下的应用 在探讨GNU环境下的ARM汇编语言之前,我们先来理解一下汇编语言的基本角色及其在系统开发中的重要性。汇编语言是一种低级编程语言,它与特定的...

    GNU ARM汇编

    最后,GNU ARM汇编还包含了一些常用的伪操作,用于定义数据和控制汇编器的行为。例如,.byte、.short、.long等伪操作用于定义数据,而.quad、.float、.double等用于定义特定类型的数据。这些伪操作对于数据和内存的...

    GNU_ARM汇编入门.pdf

    以上知识点涵盖了GNU ARM汇编的基础概念、语法结构、标号使用、段管理、入口点定义、宏定义、常数表示及常见伪操作等内容。通过深入理解这些基础知识,可以帮助开发人员更有效地使用ARM汇编语言进行编程。

    ARM标准汇编与GNU汇编

    ARM汇编是针对ARM架构处理器的低级编程语言,而GNU汇编则是GNU开发工具集的一部分,用于在多种架构上编写汇编代码,包括ARM平台。本文将详细探讨这两个主题,并为Linux开发人员提供宝贵的指导。 一、ARM汇编语言...

    参考资料—GNU ARM汇编语法1

    本文将详细介绍GNU ARM汇编语法的关键要素,包括语句格式、标号、伪操作、伪指令以及常数定义等。 1、GNU ARM汇编语言语句格式 一条汇编语言语句通常由可选的标签、操作码、操作数和结束符组成。标签用于标识代码的...

    第6讲ARM汇编伪指令与伪操作.pptx

    【ARM汇编伪指令与伪操作】是编程领域中针对ARM架构处理器的一种特定编程技术。在ARM汇编语言中,伪指令和伪操作是至关重要的概念,它们在编写程序时起到辅助作用,但并不直接转化为实际的机器指令执行。这些指令在...

    第5章+第1节+ARM汇编语言的伪操作、宏指令与伪指令

    本章节主要探讨的是ARM汇编语言中的三个关键概念:伪操作、宏指令和伪指令。 首先,我们来理解伪操作(Pseudo-Ops)。伪操作在ARM汇编程序中扮演着重要的角色,它们并不直接对应于ARM处理器可执行的机器指令,而是...

    ARM GNU 汇编语言参考手册

    文档重点介绍了GNU ARM汇编语言的基本语法、常用指令以及特定于ARM架构的特性,对于理解和掌握ARM平台下的程序开发具有重要意义。 #### 关键概念解释 **1. ARM架构与GNU汇编** - **ARM架构**:一种精简指令集计算...

Global site tag (gtag.js) - Google Analytics