zoukankan      html  css  js  c++  java
  • GNU ARM汇编伪操作(Directives) 命令集

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

    本文链接: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 这里,如下图:

     GNU <wbr>ARM汇编伪操作(Directives) <wbr>命令集

    看到是2.20

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

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

    GNU <wbr>ARM汇编伪操作(Directives) <wbr>命令集

  • 相关阅读:
    匿名方法
    优化从 App.config 读取配置文件
    显示(explicit )与隐式(implicit)转换操作符
    ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
    协变和逆变
    html frameset的介绍
    html <frame>标签使用
    html <table>标签信息
    html 列表相关信息
    html <form>相关表单
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2075969.html
Copyright © 2011-2022 走看看