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语言中的;
    #   
立即数前缀

目录
相关文章
|
17天前
|
编译器
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
【ARM汇编速成】零基础入门汇编语言之基本认识(一)
|
3月前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
641 3
|
17天前
|
存储 编译器 C语言
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
【ARM汇编速成】零基础入门汇编语言之C与汇编混合编程(四)
|
17天前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
|
17天前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
|
3月前
|
Ubuntu Linux 编译器
在ubantu/linux系统出现parse error(语法错误)
本文讨论了在Ubuntu/Linux系统中遇到"parse error"(语法错误)的问题,并提供了将非声明语句移动到所有声明语句下方以解决该问题的解决方案。
在ubantu/linux系统出现parse error(语法错误)
|
3月前
|
Linux 网络安全 开发工具
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。
245 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
|
3月前
|
编解码 安全 Linux
基于arm64架构国产操作系统|Linux下的RTMP|RTSP低延时直播播放器开发探究
这段内容讲述了国产操作系统背景下,大牛直播SDK针对国产操作系统与Linux平台发布的RTMP/RTSP直播播放SDK。此SDK支持arm64架构,基于X协议输出视频,采用PulseAudio和Alsa Lib处理音频,具备实时静音、快照、缓冲时间设定等功能,并支持H.265编码格式。此外,提供了示例代码展示如何实现多实例播放器的创建与管理,包括窗口布局调整、事件监听、视频分辨率变化和实时快照回调等关键功能。这一技术实现有助于提高直播服务的稳定性和响应速度,适应国产操作系统在各行业中的应用需求。
|
4月前
|
Linux
linux网络统计信息和端口占用情况基本语法
linux网络统计信息和端口占用情况基本语法
|
4月前
|
Unix Linux
linux进程状态基本语法
linux进程状态基本语法