freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]arm教材第5章arm匯編程序設(shè)計(已修改)

2025-01-28 06:09 本頁面
 

【正文】 第5章 ARM匯編程序設(shè)計ARM編譯器,如ADS集成開發(fā)環(huán)境,一般都支持匯編語言的程序設(shè)計。本章介紹ARM程序設(shè)計的一些基本概念,如ARM匯編語言的偽指令、匯編語言的語句格式和匯編語言的程序結(jié)構(gòu)等到,并在些基礎(chǔ)上介紹一些常用的ARM匯編子程序的設(shè)計。 ARM偽指令A(yù)RM匯編程序由匯編指令、偽指令和宏指令組成,偽指令不介匯編指令那樣在處理器的運(yùn)行期間執(zhí)行,而是在匯編器對匯編程序進(jìn)行匯編時處理。宏是一段獨(dú)立的匯編程序代碼,它是通過偽指令定義的,在程序中宏指令即調(diào)用宏指令。當(dāng)程序被匯編時,匯編程序?qū)γ總€宏調(diào)用進(jìn)行展開,用宏定義代匯編程序中的宏指令。由于指令也發(fā)球匯編偽指令的一部分,因此本書將宏指令放在匯編偽一起介紹。與單片機(jī)匯編程序設(shè)計一樣,在ARM匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,它們沒有相對應(yīng)的操作友碼,通常稱這些特殊指令助記符為偽指令,它們所完成的操作稱為偽操作。偽指令在源程序中的作用是為完成匯編程序做各種準(zhǔn)備工作,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,偽指令的使命就完成了。在ARM的光榮稱號程序中,有如下幾種偽指令:符號定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令以及其他偽指令。 符號定義(Symbol Definition)偽指令符號定義偽指令用于定義ARM匯編程序中的變量、對變量賦值以及定義寄存器的別名等。常見的符號定義偽指令有以下幾種:l 用于寶玉局變量的GBLA、GBLL和GBLS;l 用于定義局部變量的LCLA、SETL、LCLS;l 用于對變量賦值的SETA、SETL、SETS;l 為通用寄存器列表定義名稱的RLIST;l 為一個協(xié)處理器的寄存器定義名稱的偽指令CN;l 為一個協(xié)處理器定義名稱的偽指令CP;l 為一個CFP寄存器定義名稱的偽指令DN和SN;l 為一個FPA浮點(diǎn)寄存器定義名稱的偽指令FN。1. GBLA、GBLL和GBLS語法格式:GBLA(GBLL或GBLS) 全局變量名GBLA、GBLL和GBLS偽指令用于定義一個ARM程序中的全局變量,并半其初始化。其中:GBLA偽指令用于定義一個全局的數(shù)字變量,并初始化為0;GBLL偽指令用于定義一個全局的邏輯變量,并初始化為F(假);GBLS偽指令用于定義一個全局的字符串變量,并初始化為空。由于以上三條偽指令用于定義全局變量,因此在整個程序范圍內(nèi)變量名必須唯一。使用示例:GBLA Number1 ;定義一個全局的數(shù)字變量,變量名為Number1Number1 SETA 0xaa ;將Number1變量賦值為0xaaGBLL True1 ;定義一個全局的邏輯變量,變量名為True1True1 SETL{TRUE} ;將True1變量賦值為真GBLS String1 ;定義一個全局的字符串變量,變量名為String1 String1 SETS“Testing” ;將String1變量賦值為“Testing”2. LCLA、LCLL和 LCLS語法格式:LCLA(LCLL或LCLS) 局部變量名LCLA、LCLL和LCLS偽指令用于定義一個ARM程序中的局部變量,并將其初始化,其中:l LCLA偽指令用于定義一個局部的數(shù)字變量,并初始化為0;l LCLL偽指令用于定義一個局部的邏輯變量,并初始化為F(假);l LCLS偽指令用于定義一個局部的字符串變量,并初始化為空。以上三條偽指令用于聲明局部變量,在其作用范圍內(nèi)變量名必須唯一。使用示例:LCLA Number2 ;聲明一個局部的數(shù)字變量,變量名為Number2 Number2 SETA 0xaa ;將Number2 變量賦值為0xaaLCLL Logic2 ;聲明一個局部的邏輯變量,變量名為Logic2Logic2 SETL{TRUE} ;將Logic2變量賦值為真LCLS String2 ;定義一個局部的字符串變量,變量名為String2String2 SETS“Testing” ;將String2變量賦值為“Testing”3. SETA、SETL和SETS語法格式:變量名 SETA(SETL或SETS) 表達(dá)式偽指令SETA、SETL、SETS用于給一個已經(jīng)定義的全局變量或局部變量賦值。l SETA偽指令用于給一個數(shù)學(xué)變量賦值;l SETL偽指令用于給一個邏輯變量賦值;l SETS偽指令用于給一個字符串變量賦值。其中,變量名是已經(jīng)定義地的全局變量或局部變量,表達(dá)式是將要賦給變量的值。使用示例:LCLA Number3 ;聲明一個局部的數(shù)字變量,變量名為Number3Number3 SETA 0xaa ;將Number3變量賦值為0xaaLCLL Logic3 ;聲明一個局部的邏輯變量,變量名為Logic3Logic3 SETL{TRUE}了 ;將Logic3變量賦值為真4. RLIST語法格式:名稱 RLIST {寄存器列表}RLIST偽指令可用于對一個通用寄存器列表定義名稱,使用該偽指令定義的名稱可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器訪問次序為根據(jù)寄存器的編號由低到高,而與列表中的寄存器排列次序無關(guān)。使用示例:RegList RLIST {R0R5,R8,R10} ;將寄存器列表名稱定義為RegList,可在ARM ;指令LDM/STM中通過該名稱訪問寄存器列表STMD SP!,RegList ;保存寄存器列表RegList 到堆棧由于在編程過程中,協(xié)處理器匯編偽指令使用的情況比較少,因此本書不對CP、DN和SN以及FN等協(xié)處理器偽指令進(jìn)行介紹。 數(shù)據(jù)定義(DATA Definition)偽指令數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲單元,同時可完成對已分配存儲單元的初始化。常見的數(shù)據(jù)定義偽指令有如下幾種:l DCB用于分配一片連續(xù)的字節(jié)存儲單元并用指定的數(shù)據(jù)初始化;l DCW(DCWU)用于分配一片連續(xù)的半字節(jié)存儲單元并用指定的數(shù)據(jù)初始 化;l DCD(DCDU)用于分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始 化;l DCFS(DCFSU)用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化;l DCQ(DCQU)用于分配一片以8字節(jié)個為單位的連續(xù)的存儲單元并用指定的數(shù)據(jù)初始化;l DCDO用于分配一段字的內(nèi)存單元,將每個單元的內(nèi)容初始化為該單元相對于基址寄存器的偏移量;l DCI用于分配一段字的內(nèi)豐單元,并用單精度的浮點(diǎn)數(shù)據(jù)初始化,指定內(nèi)存單元存放的是代碼,而不是數(shù)據(jù);l SPACE用于分配一片連續(xù)的存儲單元;l MAP用于定義一個結(jié)構(gòu)化的內(nèi)存表首地址;l FIEL
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1