汇编语言每行的语法:



    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 linux常用汇编语法的更多相关文章

  1. Linux常用命令语法+示例

    原文出自:https://blog.csdn.net/seesun2012 Linux常用命令:Linux查看日志命令总结:Tomcat相关:Linux配置网卡,连接外网:Linux下安装JDK:Li ...

  2. ARM GNU 常用汇编伪指令介绍

    abort .abort: 停止汇编 .align abs­expr1, abs­expr2: 以某种对齐方式,在未使用的存储区域填充值. 第一个值表示对齐方式,4, 8,16 或 32. 第 二个表 ...

  3. linux常用的内核镜像格式

    linux常用的内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux.Image.zImage等. 1.     Linux内核镜像格式 1.1 vmlinux vmlinuz是可引导的. ...

  4. ARM GNU常用汇编语言介绍

    ARM GNU常用汇编语言介绍 ARM汇编语言源程序语句,一般由指令,伪操作,宏指令和伪指令组成. ARM汇编语言的设计基础是汇编伪指令,汇编伪操作和宏指令. 伪操作,是ARM汇编语言程序里的一些特殊 ...

  5. (转)ARM GNU常用汇编语言介绍

    ARM GNU常用汇编语言介绍 原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010445441611/ ARM汇编语言源程序语句,一般 ...

  6. 常用 ARM 指令集及汇编

    ARM7TDMI(-S)指令集及汇编 ARM 处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制 较为简单,ARM7TDMI(-S)具有 32 位 ARM 指令集和 16 位 T ...

  7. ARM linux电源管理——Cortex A系列CPU(32位)睡眠和唤醒的底层汇编实现

    ARM linux电源管理——Cortex A系列CPU(32位)睡眠和唤醒的底层汇编实现 承接 http://www.wowotech.net/pm_subsystem/suspend_and_re ...

  8. Linux设备树语法详解

    概念 Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离.在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写.引入了设备树之后,驱动代 ...

  9. ARM Linux 3.x的设备树(Device Tree)

    http://blog.csdn.net/21cnbao/article/details/8457546 宋宝华 Barry Song <21cnbao@gmail.com> 1.     ...

随机推荐

  1. Swift基础之守卫语句guard

    本篇文章翻译自:http://ericcerney.com/swift-guard-statement/原作者:ecerney该语法为swift2.0之后添加的新特性 最开始在Apple的Platfo ...

  2. paypal的IPN机制

    paypal对接时发现有这么一个机制,看起来还不错,起到了防止篡改欺诈行为,保证了通信的安全性,但会增加几次通信.

  3. SpriteBuilder&Cocos2D使用CCEffect特效实现天黑天亮过度效果

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在动作或RPG类游戏中我们有时需要天黑和天亮过度的效果来完成场 ...

  4. linux内核中默认logo的具体位置

    /driver/logo/... 以下这个目录下对应的是logo的设置

  5. 从浏览器直接转跳到APP具体页面---(魔窗)MagicWindow使用教程

    想要实现在网页里一键调到你APP的指定页面吗,好比打开 JD的一个商品的网页,从网页调到APP这个商品的页面.APP服务化, 使用魔窗SDK可以轻松实现! 老规矩:效果图奉上 1.注册魔窗账号,创建A ...

  6. 当freemarker中EL表达式的值为空时出现异常的解决方法

     <#list pageView.list as msg>      <form name="msgForm" id="msgForm" ...

  7. SendMessageUpwards定义简单按钮(Unity3D开发之十)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=582 SendMessageUp ...

  8. 从JDK源码角度看java并发线程的中断

    线程的定义给我们提供了并发执行多个任务的方式,大多数情况下我们会让每个任务都自行执行结束,这样能保证事务的一致性,但是有时我们希望在任务执行中取消任务,使线程停止.在java中要让线程安全.快速.可靠 ...

  9. Tomcat的管道

    Tomcat中按照包含关系一共有四个容器--StandardEngine.StandardHost.StandardContext和StandardWrapper,对这四个容器的详细解析后面会涉及,请 ...

  10. Linux 学习笔记_12_文件共享服务_2_FTP应用--vsftpd

    Wu-FTP:古老,配置复杂 Proftp:功能强大 vsftp: 安全,高速,稳定[系统默认的FTP软件] VSFTP服务器配置 启动:/etc/rc.d/init.d/vsftpd start [ ...