日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/20 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GNU ARM汇编伪操作(Directives) 命令集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文是原創(chuàng),轉(zhuǎn)載請注明出處?

本文鏈接: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定義為全局標(biāo)號

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

.extern??? .extern symbol?????? 聲明symbol為一個外部變量

2.數(shù)據(jù)定義偽操作

.byte????? .byte expr {,expr}…? 分配一段字節(jié)內(nèi)存單元,并用expr初始化字節(jié)內(nèi)存單元(8bit)

.hword?????.bword expr {,expr}…?分配一段半字內(nèi)存單元,并用expr初始化半字內(nèi)存單元 (16bit)

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

.word????? .word expr {,expr}…? 分配一段字內(nèi)存單元,并用expr初始化字內(nèi)存單元(32bit)

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

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

.ascii? .ascii expr{,expr}…分配一段字符串內(nèi)存單元,并用expr初始化字符串內(nèi)存單元(非零結(jié)束符)

.asciz??.asciz expr{,expr}…分配一段字符串內(nèi)存單元,并用expr初始化字符串內(nèi)存單元(零結(jié)束符)

.string??? .string expr {,expr}…? 同.asciz(零結(jié)束符)

.quad????? .qua expr {,expr}…?? 分配一段雙字內(nèi)存單元,并用expr初始化雙字內(nèi)存單元

.octa????? .octa expr{,expr}…? ?分配一段四字內(nèi)存單元,并用expr初始化四字內(nèi)存單元

.float??.float expr{,expr}…? 分配一段字內(nèi)存單元,并用32位IEEE單精度浮點數(shù)expr初始化內(nèi)存單元

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

.double?.double expr{,expr}…?分配一段雙字內(nèi)存單元,并用64位IEEE雙精度浮點數(shù)expr初始化內(nèi)存單元

.fill?? .fill repeat{,size}{,value} 用size個字節(jié)value填充repeat次(size默認(rèn)為1,value默認(rèn)為0)

.zero?? .zreo size????????????????? 用0填充size個字節(jié)的內(nèi)存單元

.space? .space size{,value}???????? 用value填充size個字節(jié)的內(nèi)存單元(value默認(rèn)為0)

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

.ltorg? .ltorg????????????????????? 聲明一個數(shù)據(jù)緩沖池(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}???? 將定義符開始的代碼編譯到數(shù)據(jù)段或數(shù)據(jù)子段(subsection)

.bss??????? .bss?{subsection}????? 將變量存放到.bss段或.bss的子段(subsection)

.align???.align{alignment}{,fill}{,max} 通過用零或指定的數(shù)據(jù)進(jìn)行填充來使當(dāng)前位置與指定邊界對齊

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

.org??????? .org offset{,expr}?????指定從當(dāng)前地址加上offset開始存放代碼,并且從當(dāng)前地址到當(dāng)前

?????????????????????????????????? 地址加上offset之間的內(nèi)存單元,用零或指定的數(shù)據(jù)進(jìn)行填充

org=origin

其他匯編與反匯編

.end?????? .end?????? 標(biāo)記匯編文件的結(jié)束行,即標(biāo)記后的代碼不做處理

.err?????? .err?????? 使編譯結(jié)果產(chǎn)生錯誤報告

.eject???? .eject???? 在匯編符號列表文件中插入一分頁符

.list????? .list??????.產(chǎn)生匯編列表(從.list到.nolist)

.nolist??? .nolist??? 匯編列表結(jié)束處。再次使用.list產(chǎn)生匯編列表

.title???? .title "title_name"? 使用heading作為標(biāo)題(位于匯編列表文件中文件名下一行)

.sbttl???? .sbttl "title_name"? 使用heading作為子標(biāo)題(位于.title標(biāo)題下一行)

.print???? .print string??????? 打印輸出信息到標(biāo)準(zhǔn)輸出

4.預(yù)定義控制操作

.if????????????????????????????? 條件判斷語句

.else??????????????????????????? 條件判斷語句

.endif?????????????????????????? 條件結(jié)束語句

.macro?????????????????????????? 標(biāo)識宏定義的開始

.endm??????????????????????????? 標(biāo)識宏定義的結(jié)束

.exitm?????.exitm????????????????中途跳轉(zhuǎn)出宏

.include???.include "file_name"? 包含文件標(biāo)識???????????????????

?

參考文章

1.參看更多更詳細(xì)的GNU ARM 匯編 偽操作()的方法

? 第一步:打開網(wǎng)頁: http://sourceware.org/binutils/

? 第二步:找到Documentation 這里,如下圖:

?

看到是2.20

?第三步:打開網(wǎng)頁http://sourceware.org/binutils/docs-2.20/as/? (如果你看到的是2.23或者別的什么,說明文檔更新了,把2.20換成更新的版本序號)

?第四步:找到Directives這里,這里就是你要找的偽操作,這里面全是介紹,如下圖

總結(jié)

以上是生活随笔為你收集整理的GNU ARM汇编伪操作(Directives) 命令集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。