新聞中心

        ARM linux常用匯編語法

        作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
        =============================

        匯編語言每行的語法:

        本文引用地址:http://www.104case.com/article/201611/318765.htm

        lable: instruction ; comment

        段操作: .section

        格式: .section 段名 [標(biāo)志]

        [標(biāo)志]可以是如下:

        a 允許段
        w 可寫段
        x 可執(zhí)行段

        常見段名: data, bss, text, rodata段,我們也可以定義我們自己的段。

        .data: 已初始化數(shù)據(jù)段
        .bss: 未初始化數(shù)據(jù)段
        .text:代碼段
        .rodata:只讀段


        匯編程序的入口點(diǎn):

        通常,linux的匯編程序的入口點(diǎn)都是從_start這個(gè)全局符號開始的。而C語言的入口點(diǎn)是main, main函數(shù)就是被_start后面的代碼調(diào)用。

        .global _start
        _start:
        代碼,,,初始化程序運(yùn)行環(huán)境;
        代碼,,,
        ,,,
        bl main
        bl exit

        linux匯編中常數(shù)的使用:

        十進(jìn)制: 以非0 的數(shù)字開頭表示, 124, 564
        二進(jìn)制: 以0b開頭,如0b101001
        八進(jìn)制: 以0開始的數(shù)字,如05645
        十六進(jìn)制:以0x開頭, 如0xab12

        linux匯編中常用的偽操作:

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

        .byte, 定義單個(gè)字節(jié), 如, .byte 5, 4, 0b1001, 0x22, 055, b
        .short, 定義半字?jǐn)?shù)據(jù), 如,.short 0x1122, 3344
        .long, 定義4字節(jié)數(shù)據(jù),如, 0x11223344,
        .word

        .string, .asciz, .ascii, 定義字符串?dāng)?shù)據(jù), 比如.string "hello"

        對齊偽操作: .align n --> 2^n
        文件結(jié)束操作:.end
        文件包含操作:.include, 一般是在文件開頭的時(shí)候包含頭文件時(shí)使用

        代碼指令集切換:

        .thumb, .code 16 這兩個(gè)偽指令告訴編譯器從這里開始,以后的代碼都編譯成16為的thumb指令。
        .arm, .code 32 這兩個(gè)偽指令告訴編譯器從這里開始,以后的代碼都編譯成32為的arm指令。

        函數(shù)定義格式:

        函數(shù)名:
        函數(shù)體
        函數(shù)返回語句

        比如add函數(shù):
        .global add
        add:
        add r0, r1, r2
        mov pc, lr


        常見符號的意義和用法:

        @ : 代碼注釋符號
        ; 語句分離符號。(相當(dāng)于C語言中的;)
        # 立即數(shù)前綴



        關(guān)鍵詞: ARMlinux匯編語

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 西畴县| 宕昌县| 平泉县| 宁蒗| 高淳县| 拉萨市| 泸西县| 牡丹江市| 金门县| 沂水县| 赣州市| 虹口区| 克拉玛依市| 额济纳旗| 兴和县| 勐海县| 青阳县| 阜城县| 巴青县| 安徽省| 满洲里市| 洪湖市| 湖州市| 洪洞县| 南雄市| 静海县| 繁峙县| 桐柏县| 田林县| 乡城县| 亚东县| 新竹县| 离岛区| 凤山市| 富平县| 罗定市| 阳新县| 长宁区| 共和县| 当雄县| 霍山县|