色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>ARM>ARM匯編器所支持的偽操作

ARM匯編器所支持的偽操作

2017-10-17 | rar | 0.4 MB | 次下載 | 1積分

資料介紹

ARM源程序文件(即源文件)有特定的文件格式和語法規則,可以使用任意文本編輯器編寫程序代碼。一般地,ARM源程序文件名的后綴如表10.1所示。
  表10.1 ARM源程序文件名后綴
  程 序文 件 名
  匯編*.S
  引入文件*.INC
  C程序*.C
  頭文件*.H
  在一個項目中,至少要有一個匯編源文件,可以有多個匯編源文件或多個C程序,或者C程序文件和匯編文件兩者的組合。
  ARM匯編語言語句格式如下所示。
  {label}{instruction/directive/pseudo-instruction}{;comment}
  注意所有指令均不能頂格寫,要用空格(space)或TAB開頭。
  其中instruction即ARM指令集中的匯編指令。Directive為ARM匯編器所支持的偽操作。pseudo-instruction為ARM匯編器所支持的偽操作。下面章節分別介紹偽操作和偽指令。
  10.1 ARM匯編器所支持的偽操作
  在ARM匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統的助記符不同,沒有相對應的操作碼,通常稱這些特殊指令助記符為偽操作標識符(directive),它們所完成的操作稱為偽操作。偽操作在源程序中的作用是為完成匯編程序作各種準備工作的,這些偽操作僅在匯編過程中起作用,一旦匯編結束,偽操作的使命就完成。
  在ARM的匯編程序中,偽操作主要有符號定義偽操作、數據定義偽操作、匯編控制偽操作、宏指令等。
  10.1.1 符號定義(Symbol Definition)偽操作
  符號定義偽操作用于定義ARM匯編程序中的變量、對變量賦值以及定義寄存器的別名等操作。常見的符號定義偽操作有如下幾種。
  · 用于定義全局變量的GBLA、GBLL和GBLS。
  · 用于定義局部變量的LCLA、LCLL和LCLS。
  · 用于對變量賦值的SETA、SETL、SETS。
  · 為通用寄存器列表定義名稱的RLIST。
  · 為協處理器寄存器定義別名的CN。
  · 為協處理器定義別名的CP。
  · 為VFP寄存器定義名稱的DN和SN。
  · 為FPA浮點指針寄存器定義名稱的FPA。
  1.全局變量定義偽操作GBLA、GBLL和GBLS
  (1)語法格式
  GBLA、GBLL和GBLS偽操作用于定義一個ARM程序中的全局變量并將其初始化。其中:
  GBLA偽操作用于定義一個全局的數字變量并初始化為0。
  GBLL偽操作用于定義一個全局的邏輯變量并初始化為F(假)。
  GBLS偽操作用于定義一個全局的字符串變量并初始化為空。
  由于以上3條偽指令用于定義全局變量,因此在整個程序范圍內變量名必須惟一。
  語法格式如下。
  《gblx》 《variable》
  ① 《gblx》
  取值為GBLA、GBLL、GBLS之一。
  ② 《variable》
  定義的全局變量名,在其作用范圍內必須惟一。全局變量的作用范圍為包含該變量的源程序。
  (2)使用說明
  如果用這些偽操作重新聲明已經聲明過的變量,變量的值將被初始化成后一次聲明語句中的值。
  (3)示例
  ① 使用偽操作聲明全局變量。
  GBLA Test1 ;定義一個全局的數字變量,變量名為Test1
  Test1 SETA 0xaa ;將該變量賦值為0xaa
  GBLL Test2 ;定義一個全局的邏輯變量,變量名為Test2
  Test2 SETL {TRUE} ;將該變量賦值為真
  GBLS Test3 ;定義一個全局的字符串變量,變量名為Test3
  Test3 SETS “Testing” ;將該變量賦值為“Testing”
  ② 聲明變量objectsize并設置其值為0xff,為“SPACE”操作做準備。
  GBLA objectsize
  Objectsize SETA oxff
  SPACE objectsize
  ③ 下面的例子顯示如何使用匯編命令設置變量的值。具體做法是使用“-pd”選項。
  Armasm -pd “objectsize SETA oxff” -o objectfile sourcefile
  2.局部變量定義偽操作LCLA、LCLL和LCLS
  (1)語法格式
  LCLA、LCLL和LCLS偽指令用于定義一個ARM程序中的局部變量并將其初始化。其中:
  LCLA偽操作用于定義一個局部的數字變量并初始化為0。
  LCLL偽操作用于定義一個局部的邏輯變量并初始化為F(假)。
  LCLS偽操作用于定義一個局部的字符串變量并初始化為空。
  以上三條偽操作用于聲明局部變量,在其作用范圍內變量名必須惟一。
  語法格式如下。
  《lclx》 《variable》
  ① 《gblx》
  取值為LCLA、LCLL、LCLS之一。
  ② 《variable》
  所定義的局部變量名,在其作用范圍內必須惟一。局部變量作用范圍為包含該局部變量的宏。
  (2)使用說明
  如果用這些偽操作重新聲明已經聲明過的變量,則變量的值將被初始化成后一次聲明語句中的值。
  (3)示例
  ① 使用偽操作聲明局部變量。
  LCLA Test4 ;聲明一個局部的數字變量,變量名為Test4
  Test3 SETA 0xaa ;將該變量賦值為0xaa
  LCLL Test5 ;聲明一個局部的邏輯變量,變量名為Test5
  Test4 SETL {TRUE} ;將該變量賦值為真
  LCLS Test6 ;定義一個局部的字符串變量,變量名為Test6
  Test6 SETS “Testing” ;將該變量賦值為“Testing”
  ② 下面的例子定義一個宏,顯示了局部變量的作用范圍。
  MACRO ;聲明一個宏
  $label message $a ;宏原型
  LCLS err ;聲明局部字符串變量
  $label
  INFO 0,“err”:CC::STR:$a
  MEND ;宏結束,局部變量不再起作用
  3.變量賦值偽操作SETA、SETL和SETS
  (1)語法格式
  偽指令SETA、SETL和SETS用于給一個已經定義的全局變量或局部變量賦值。
  SETA偽操作用于給一個數學變量賦值;
  SETL偽操作用于給一個邏輯變量賦值;
  SETS偽操作用于給一個字符串變量賦值;
  語法格式如下。
  Variable 《setx》 expr
  ① Variable
  變量名為已經定義過的全局變量或局部變量,表達式為將要賦給變量的值。
  ② 《setx》
  取值為SETA、SETL、SETS之一。
  ③ expr
  數學、邏輯或字符串表達式,也就是將要賦予變量的值。
  (2)使用說明
  在向變量賦值前必須先聲明變量。
  也可以在匯編指令中預定義變量,如:
  “Armasm --pd ”objectsize SETA oxff“ --o objectfile sourcefile”
  (3)示例
  ① 為預先定義的變量賦值。
  LCLA Test3 ;聲明一個局部的數字變量,變量名為Test3
  Test3 SETA 0xaa ;將該變量賦值為0xaa
  LCLL Test4 ;聲明一個局部的邏輯變量,變量名為Test4
  Test4 SETL {TRUE} ;將該變量賦值為真
  LCLS Test6 ;定義一個局部的字符串變量,變量名為Test6
  Test6 SETS “Testing” ;將該變量賦值為“Testing”
  ② 使用變量賦值偽操作,定義一些程序相關內容。
  GBLA versionNumber
  VersionNumber SETA 21
  GBLL Debug
  Debug SETL {TRUE}
  GBLS versionString
  VersionString SETS “version 1.0”
  4.通用寄存器列表定義偽操作RLIST
  (1)語法格式
  RLIST偽操作可用于對一個通用寄存器列表定義名稱,使用該偽操作定義的名稱可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器訪問次序根據寄存器的編號由低到高,與列表中的寄存器排列次序無關。
  語法格式如下。
  Name RLIST {list-of-registers}
  ① Name
  寄存器列表的名稱。
  注意該名稱不能和已經定義寄存器或協處理器名稱相同。
  ② list-of-registers
  通用寄存器列表。列表中的寄存器用“,”隔開,如果是編號連續的通用寄存器可以用“-”指定寄存器范圍。具體用法參見程序示例。
  (2)使用說明
  在使用ARM匯編編譯器編譯源文件時,可以使用“-checkreg”選項來指定匯編器進行寄存器檢查。如果匯編器檢測到寄存器列表中的寄存器編號非升序排列,將給出編譯警告。
  (3)示例
  ① 將寄存器列表名稱定義為RegList,可在ARM指令LDM/STM中通過該名稱訪問寄存器列表。
  RegList RLIST {R0-R5,R8,R10} ;
  ② 使用“-”在寄存器列表中,指定寄存器范圍。
  Context RLIST {r0-r6,r8,r10-r12,r15} ;
  5.協處理器寄存器名稱定義偽操作CN
  (1)語法格式
  CN偽操作為協處理器寄存器定義名稱。
  語法格式如下。
  Name CN expr
  ① Name
  定義的協處理器寄存器的名稱。
  注意該名稱不能和已經定義寄存器或協處理器名稱相同。
  ② expr
  協處理器寄存器編號。
  (2)使用說明
  協處理器寄存器編號的數值范圍為0~15。避免使用不同的名稱定義同一物理寄存器。
  注意協處理器寄存器的名稱不能被定義為c0~c15,這些名稱已經被匯編器預定義。
  (3)示例
  將協處理器寄存器6命名為Power。
  Power CN 6
  6.協處理器名稱定義偽操作CP
  (1)語法格式
  CP偽操作為指定的協處理器定義名稱。
  語法格式如下。
  Name CP expr
  ① Name
  定義的協處理器名稱。
  注意該名稱不能和已經定義寄存器或其他協處理器名稱相同。
  ② expr
  協處理器編號。
  (2)使用說明
  協處理器編號范圍為0~15。
  使用CP偽操作為協處理器定義一個方便記憶的名稱,可以使程序員更高效地編寫代碼。
  注意協處理器寄存器的稱不能被定義為p0~p15,這些名稱已經被匯編器預定義。
  (3)示例
  將協處理器6命名為Dmu。
  Dmu CP 6
  7.VFP寄存器名稱定義偽操作DN/SN
  (1)語法格式
  DN偽操作為雙精度(double-precision)VFP寄存器定義名稱。D0~D15是匯編器預先定義的,用戶不能使用。
  SN偽操作為單精度(single-precision)VFP寄存器定義名稱。S0~S31是匯編器預先定義的,用戶不能使用。
  語法格式如下。
  Name DN expr
  Name SN expr
  ① Name
  指定的VFP寄存器的名稱。
  注意該名稱不能和已經定義寄存器或其他協處理器名稱相同。
  ② expr
  指定VFP寄存器編號。對于雙精度寄存器編號范圍為0~15;對于單精度寄存器編號范圍為0~31。
  (2)示例
  ① 將VFP雙精度寄存器6定義為energy。
  energy DN 6
  ② 將VFP單精度寄存器16定義為mass。
  mass SN 16
  8.浮點寄存器名稱定義偽操作FN
  (1)語法格式
  FN為一個FPA浮點寄存器定義名稱。F0~F7是匯編器預先定義的,用戶不能使用。
  注意FPA的使用在ARM公司新發布的編譯器RVCT中已不再支持。
  語法格式如下。
  Name FN expr
  ① Name
  指定的浮點寄存器的名稱。
  注意該名稱不能和已經定義寄存器或其他協處理器名稱相同。
  ② expr
  指定浮點寄存器編號。編號范圍為0~7。
  (2)示例
  為浮點寄存器6指定名稱為Energy。
  Energy FN 6
?
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1490次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  92次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  10次下載  |  免費
  11. 6基于AT89C2051/4051單片機編程器的實驗
  12. 0.11 MB  |  4次下載  |  免費
  13. 7藍牙設備在嵌入式領域的廣泛應用
  14. 0.63 MB  |  3次下載  |  免費
  15. 89天練會電子電路識圖
  16. 5.91 MB  |  3次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30320次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537791次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233045次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
主站蜘蛛池模板: 亚洲精品国产AV成人毛片| 69亞洲亂人倫AV精品發布| 午夜免费体验30分| 在线 亚洲 日韩 欧洲视频| 第一次处破女高清电影| 精品视频网站| 日本在线免费| 99国产精品综合AV无码| 极品少妇粉嫩小泬啪啪AV| 日本福利片午夜免费观着| 日韩精品亚洲专区在线影院| 亚洲色大成网站www久久九九| 白丝高中生被c爽哭| 久久资源365| 亚洲在线视频自拍精品| 国产精品JIZZ视频免费| 青青草原直播| bt天堂午夜国产精品| 久久亚洲精品2017| 亚洲精品6久久久久中文字幕 | 久久婷五月综合色啪首页| 沈阳熟女露脸对白视频| 亚洲、国产综合视频| 俄罗斯极品hd| 日本精品在线观看视频| yellow片高清视频免费看| 欧美男女爱爱| u15女少天堂写真| 欧美最新色p图| 成人国产在线视频| 日本孕妇大胆孕交| 啊…嗯啊好深男男高h文总受| 美女视频黄a视频全免费网站色窝 美女伸开两腿让我爽 | 红桃传媒少妇人妻网站无码抽插| 手机国产视频福利| 多人乱肉高hnp| 婷婷开心激情综合五月天| 国产国产成人人免费影院| 臀精插宫NP文| 亚洲国产在线播放在线| 国产精品99亚发布|