ARM linux常用汇编语法

简介:

汇编语言每行的语法:

    lable: instruction  ; comment

段操作: .section  
   
   
格式: .section 段名 [标志]

   
[标志]可以是如下:
   
        a
允许段
        w
可写段
        x
可执行段

   
常见段名: data,bss, text, rodata段,我们也可以定义我们自己的段。

    .data:
已初始化数据段
    .bss
: 未初始化数据段
    .text
:代码段
    .rodata
:只读段


汇编程序的入口点:

   
通常,linux的汇编程序的入口点都是从_start这个全局符号开始的。而C语言的入口点是main, main函数就是被_start后面的代码调用。

    .global _start
_start:
       
       
代码,,,
       
代码,,,
       
,,,
        bl main
        bl exit
       

linux
汇编中常数的使用:

   
十进制: 以非0 的数字开头表示, 124, 564
   
二进制: 以0b开头,如0b101001
   
八进制: 以0开始的数字,如05645
   
十六进制:以0x开头,如0xab12
   

linux
汇编中常用的伪操作:

   
数据定义伪操作:

        .byte,
定义单个字节, 如, .byte 5, 4, 0b1001, 0x22, 055, 'b'
        .short,
定义半字数据, 如,.short 0x1122, 3344
        .long,
定义4字节数据,如, 0x11223344
   
        .string, .asciz,.ascii,
定义字符串数据,比如.string "hello"

   
对齐伪操作:.align
   
文件结束操作:.end
   
文件包含操作:.include, 一般是在文件开头的时候包含头文件时使用
   
   
代码指令集切换:
           
        .thumb, .code 16
这两个伪指令告诉编译器从这里开始,以后的代码都编译成16为的thumb指令。
        .arm, .code 32
这两个伪指令告诉编译器从这里开始,以后的代码都编译成32为的arm指令。
           
函数定义格式:
   
   
函数名:
           
函数体
           
函数返回语句

   
比如add函数:
            .global add
        add:
            add r0, r1, r2
            mov pc, lr


常见符号的意义和用法:
       
    @ :
代码注释符号
    ;    
语句分离符号。(相当于C语言中的;
    #   
立即数前缀

相关文章
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
154 0
|
7月前
|
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
1243 3
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
110 0
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
在ubantu/linux系统出现parse error(语法错误)
本文讨论了在Ubuntu/Linux系统中遇到"parse error"(语法错误)的问题,并提供了将非声明语句移动到所有声明语句下方以解决该问题的解决方案。
在ubantu/linux系统出现parse error(语法错误)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
136 0
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
530 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。
581 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
8月前
|
linux进程状态基本语法
linux进程状态基本语法
创建目录mkdir,语法​mkdir [-p] Linux路径​,mkdir ~/test3在home下创建,mkdir ./x 当前目录创建 mkdir /home/xx,mkdir -p 通,必须
创建目录mkdir,语法​mkdir [-p] Linux路径​,mkdir ~/test3在home下创建,mkdir ./x 当前目录创建 mkdir /home/xx,mkdir -p 通,必须

热门文章

最新文章