久久久久久久麻豆,中日韩av在线,麻豆av在线免费,中文字幕二区三区,欧美日韩视频一区二区,亚洲欧美日韩在线一区,国产无毒不卡

ARM匯編偽指令介紹


在 ARM 匯編語言程序里,有一些特殊指令助記符,這些助記符與指令系統(tǒng)的助記符不同,沒有相對應(yīng)的操作碼,通常稱這些特殊指令助記符為偽指令,他們所完成的操作稱為偽操作。偽指令在源程序中的作用是為完成匯編程序作各種準(zhǔn)備工作的,這些偽指令僅在匯編過程中起作用,一旦匯編結(jié)束,偽指令的使命就完成。    
 
    在 ARM 的匯編程序中,有如下幾種偽指令:符號定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令、宏指令以及其他偽指令

    符號定義( Symbol Definition )偽指令   
    符號定義偽指令用于定義 ARM 匯編程序中的變量、對變量賦值以及定義寄存器的別名等操作。   
    常見的符號定義偽指令有如下幾種:   
    — 用于定義全局變量的 GBLA 、 GBLL 和 GBLS 。   
    — 用于定義局部變量的 LCLA 、 LCLL 和 LCLS 。   
    — 用于對變量賦值的 SETA 、 SETL 、 SETS 。   
    — 為通用寄存器列表定義名稱的 RLIST 。   
    1、 GBLA、GBLL 和GBLS   
    語法格式:   
    GBLA ( GBLL 或 GBLS ) 全局變量名   
    GBLA 、 GBLL 和 GBLS 偽指令用于定義一個(gè) ARM 程序中的全局變量,并將其初始化。其中:   
    GBLA 偽指令用于定義一個(gè)全局的數(shù)字變量,并初始化為 0 ;   
    GBLL 偽指令用于定義一個(gè)全局的邏輯變量,并初始化為 F (假);   
    GBLS 偽指令用于定義一個(gè)全局的字符串變量,并初始化為空;   
    由于以上三條偽指令用于定義全局變量,因此在整個(gè)程序范圍內(nèi)變量名必須唯一。   
    使用示例:   
    GBLA Test1 ;定義一個(gè)全局的數(shù)字變量,變量名為 Test1   
    Test1 SETA 0xaa ;將該變量賦值為 0xaa   
    GBLL Test2 ;定義一個(gè)全局的邏輯變量,變量名為 Test2   
    Test2 SETL ;將該變量賦值為真   
    GBLS Test3 ;定義一個(gè)全局的字符串變量,變量名為 Test3   
    Test3 SETS “ Testing ” ;將該變量賦值為 “ Testing ”  
 
    2、 LCLA、LCLL 和LCLS   
    語法格式:   
    LCLA ( LCLL 或 LCLS ) 局部變量名   
    LCLA 、 LCLL 和 LCLS 偽指令用于定義一個(gè) ARM 程序中的局部變量,并將其初始化。其中:   
    LCLA 偽指令用于定義一個(gè)局部的數(shù)字變量,并初始化為 0 ;   
    LCLL 偽指令用于定義一個(gè)局部的邏輯變量,并初始化為 F (假);   
    LCLS 偽指令用于定義一個(gè)局部的字符串變量,并初始化為空;   
    以上三條偽指令用于聲明局部變量,在其作用范圍內(nèi)變量名必須唯一。   
    使用示例:   
    LCLA Test4 ;聲明一個(gè)局部的數(shù)字變量,變量名為 Test4   
    Test3 SETA 0xaa ;將該變量賦值為 0xaa   
    LCLL Test5 ;聲明一個(gè)局部的邏輯變量,變量名為 Test5   
    Test4 SETL ;將該變量賦值為真   
    LCLS Test6 ;定義一個(gè)局部的字符串變量,變量名為 Test6   
    Test6 SETS “ Testing ” ;將該變量賦值為 “ Testing ”   

    3、 SETA、SETL 和SETS   
    語法格式:   
    變量名 SETA ( SETL 或 SETS ) 表達(dá)式   
    偽指令 SETA 、 SETL 、 SETS 用于給一個(gè)已經(jīng)定義的全局變量或局部變量賦值。   
    SETA 偽指令用于給一個(gè)數(shù)學(xué)變量賦值;   
    SETL 偽指令用于給一個(gè)邏輯變量賦值;   
    SETS 偽指令用于給一個(gè)字符串變量賦值;   
    其中,變量名為已經(jīng)定義過的全局變量或局部變量,表達(dá)式為將要賦給變量的值。   
    使用示例:   
    LCLA Test3 ;聲明一個(gè)局部的數(shù)字變量,變量名為 Test3   
    Test3 SETA 0xaa ;將該變量賦值為 0xaa   
    LCLL Test4 ;聲明一個(gè)局部的邏輯變量,變量名為 Test4   
    Test4 SETL ;將該變量賦值為真   

    4 、 RLIST   
    語法格式:   
    名稱 RLIST { 寄存器列表 }   
    RLIST 偽指令可用于對一個(gè)通用寄存器列表定義名稱,使用該偽指令定義的名稱可在 ARM 指令 LDM/STM 中使用。在 LDM/STM 指令中,列表中的寄存器訪問次序?yàn)楦鶕?jù)寄存器的編號由低到高,而與列表中的寄存器排列次序無關(guān)。   
    使用示例:   
    RegList RLIST {R0-R5 , R8 , R10} ;將寄存器列表名稱定義為 RegList ,可在 ARM 指令 LDM/STM中通過該名稱訪問寄存器列表。   

    數(shù)據(jù)定義( Data Definition )偽指令   
    數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲單元,同時(shí)可完成已分配存儲單元的初始化。   
    常見的數(shù)據(jù)定義偽指令有如下幾種:   
    — DCB 用于分配一片連續(xù)的字節(jié)存儲單元并用指定的數(shù)據(jù)初始化。   
    — DCW ( DCWU ) 用于分配一片連續(xù)的半字存儲單元并用指定的數(shù)據(jù)初始化。   
    — DCD ( DCDU ) 用于分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始化。   
    — DCFD ( DCFDU )用于為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初始  
    化。   
    — DCFS ( DCFSU ) 用于為單精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲單元并用指定的數(shù)據(jù)初   
    始化。   
    — DCQ ( DCQU ) 用于分配一片以 8 字節(jié)為單位的連續(xù)的存儲單元并用指定的數(shù)據(jù)初始   
    化。   
    — SPACE 用于分配一片連續(xù)的存儲單元   
    — MAP 用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表首地址   
    — FIELD 用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表的數(shù)據(jù)域   
    1、 DCB

COPYRIGHT(C) 2011 廈門永宏亞得機(jī)電科技有限公司版權(quán)所有(閩ICP備05025945號) ALL RIGHTS RESERVED?

電話: 0592-5190891 傳真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 廈門市海滄區(qū)興港六里17號2607室 郵編:361009 聯(lián)系人:翟先生