免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1728 | 回复: 5
打印 上一主题 下一主题

gun汇编语言保留字 汇总。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-31 08:58 |只看该作者 |倒序浏览
Gun汇编的保留字
    Gun汇编的保留字不是很多书会提到的, 查找起来很不方便, 我自己整理了一下. 希望对以后有用. 

.ascii  “<string>”

把string当成数据插入汇编中,和armasm的DCB类似.

.ascix  “<string>”

类似 .ascii , 但在每个字符串后面跟一个零字节.

.balign <power_of_2> {, <fill_value> {, <max_padding> } }

对齐地址到<power_of_2>字节. 汇编器通过添加<fill_value>字节或者默认值来对齐, 如果需要填充的字节数大于<max_padding>, 则对齐不会发生.

.byte  <bytr1> {, <byte2>} ….

把一系列的字节当成数据插入汇编, 和armasm的DCB类似.

.code  <number_of_bits>

按bit 位役置指令的长度. 16位是Thumb, 32位是ARM, 这和armasm的CODE16和CODE32类似.

.else

使用在.if 和 .endif 之间. 和armasmr ELSE类似.

.end

标记一个汇编文件的结束. 这个通常被省略.

.endif

标志着条件汇编代码块的结束, 和armasm的ENDIF类似

.endm

结束一上宏定义. 和armasm的MEND类似

.endr

结束一个循环, 和armasm的WEND类似

.equ <symbol name>, <value>

设置一个标号(symbol)的值, 和armasm的EQU类似

.err

以一个错误导致汇编的结束.

.exitm

从当前宠定义体中提前退出. 和armasm的MEXIT类似

.global <symbol>

给标号<symbol>一个外部连接. 和armasmr EXPORT类似

.hword <short1> {, <short2>} …

把一系列的16位数当成数据插入汇编, 和armasm 的DCW类似

.if < logical_expression>

定义一个条件块, 以.endif 结束. 和armasmr IF类似

.ifdef <symbol>

    如果<symbol> 是定义了的,则包含(include)下面的一段代码块, 这个代码块以 .endif来结束.

.ifndef <symbol>

   如果<symbol> 是没有定义了的,则包含(include)下面的一段代码块, 这个代码块以 .endif来结束.

.include  “<filename>”

包含指定的源文件. 和armasmr INCLUDE或者和C的#i nclude类似

.irp <param> {, <val_1>} {, <val_2>}….

    开启一个循环的代码块,块中每个value列表的value 执行一次, 块以一个 .endr 来标记结束. 在循环的代码块中, 使用 \<param>来替代value列表中的value.

.macro <name> { <arg_1>} {,<arg_2>} …{, <arg_k>}

    定义一个含有k个参数的名为<name>的宏. 宏定义必须以 .endm 来标记结束. 如果想提前跳出宏, 则可使用 .exitm . 这些和armasm中的MACRO, MEND和平MEXIT类似, 必须在宏参数前加一个”\”

.macro SHIFTLEFT a, b

      .if  \b<0

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

          .exitm

      .endif

      MOV  \a, \a, LSL #\b

.endm

.rept <number_of_times>

按照指定的次数重复执行一个代码块, 这个块以 .endr 来标记结束

<register_name> .req <register_name>

     为一个寄存器取个名字, tkg armasm的RN类似, 但这里右边的寄存器不能只给出寄存器号, 必须给出具体的寄存器, 如 acc  .req  r0.

.section <section_name> {, “<flags>”}

开始一个新的代码段或者数据段, 通常, 代码段称为 .text, 一个经过初始化的数据段称为 .data,  一个没有初始化的数据段称为 .bss . 它们都有默认的标记(flag), 连接器识别它们的默认名字, 和armasm的AREA类似,

ELF格式文件的<flag>

     标记                      含义

       a                      可分配段

       w                      可写段

       x                       可执行段

.set <variable_name> , <variable_value>

设置一个变量的值, 和armasm的SETA类似

.space <number_of_byte> {,<fill_byte>}

生成给定数量的字节, 如果指定了<fill_byte>, 则以指定的值填充每个字节, 如果没指定, 则以0 填充每个字节. 和armasm的SPACE类似

.word <word1> {,<word2>}…

        把一系列的32位字当成数据插入汇编, 和armasm的DCD类似

论坛徽章:
0
2 [报告]
发表于 2006-12-31 10:55 |只看该作者
谢谢,顺便问一句,除了gnu as手册外,还有什么这方面的资料吗?

论坛徽章:
0
3 [报告]
发表于 2006-12-31 13:48 |只看该作者
曾经看过《GCC: The Complete Reference》这本书里面有介绍AS汇编的章节。

论坛徽章:
0
4 [报告]
发表于 2006-12-31 13:50 |只看该作者
原帖由 12013396 于 2006-12-31 10:55 发表
谢谢,顺便问一句,除了gnu as手册外,还有什么这方面的资料吗?

linux-assembly-HOWTO不错

ps, 楼主把gun改成GNU吧

论坛徽章:
0
5 [报告]
发表于 2007-01-01 11:05 |只看该作者
谢谢上面的2位

论坛徽章:
0
6 [报告]
发表于 2007-01-05 11:58 |只看该作者
汗 gnu!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP