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

  1. linux shell常用语法

    特殊变量 $0 当前脚本的文件名$n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2.$# 传递给脚本或函数的参数个数.$* 传递给脚本或函数的所有参 ...

  2. ARM linux常用汇编语法

    汇编语言每行的语法:     lable: instruction  ; comment 段操作: .section           格式: .section 段名 [标志]     [标志]可以 ...

  3. linux下常用语言的语法检查插件整理

    linux下常用语言的语法检查插件 可以结合vim语法检查插件syntastic使用,具体请参考syntastic使用说明 如php,sql,json,css,js,html,shell,c等语法插件 ...

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

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

  5. ARM汇编常用指令

    RAM汇编常用指令有MOV B BL LDR  STR

  6. Linux设备树语法详解

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

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

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

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

    1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pai ...

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

    1.    ARM Device Tree起源 http://blog.csdn.net/21cnbao/article/details/8457546 Linus Torvalds在2011年3月1 ...

随机推荐

  1. Bootstrap3 排版-列表

    无序列表 排列顺序无关紧要的一列元素. <ul> <li>...</li> </ul> 有序列表 顺序至关重要的一组元素. <ol> < ...

  2. Leetcode难度表及解题汇总

    Leetcode难度表及解题汇总 参考网上一份题目难度表,以及本人的解题. Id Question Difficulty Frequency Data Structures Algorithms Bl ...

  3. Git之(四)分支管理

    当我们初始化Git仓库的时候,Git会默认创建一个名为master的主分支.在实际工作中,主分支要求是一个稳定.健壮.安全的主线,一般不允许在主分支上直接进行开发,而是拉取一个新的分支,开发.测试完成 ...

  4. JDK 源码学习——ByteBuffer

    ByteBuffer 在NIO的作用 Java SE4 开始引入Java NIO,相比较于老的IO,更加依赖底层实现.引入通道(Channels),选择器(selector),缓冲(Buffers). ...

  5. Thread Pools

    许多程序会动态创建数十个设置上百个线程.举个例子,一个web服务器可能在每一个新到来的请求时创建一个新线程,然后在请求完成后将其终止. 然而,创建一个新线程将会带来一定的耗费:它需要在内核中创建自身必 ...

  6. 剑指Offer——关于劳动合同,这6件事毕业生必须知道!

    剑指Offer--关于劳动合同,这6件事毕业生必须知道!   求职找工作,不少人拿到劳动合同的那刻,可能连合同内容都没看清,就挥着笔杆子"签签签".别急!劳动合同包含哪些条款你清楚 ...

  7. Hadoop的RPC通信原理

    RPC调用: RPC(remote procedure call)远程过程调用: 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称为客户端(client): server端 ...

  8. 从源码安装git

    蛋疼的阿里云,git版本居然才1.9.只能手动安装了. 预装 apt-get update apt-get --yes install libcurl4-gnutls-dev libexpat1-de ...

  9. python 3 dict函数 神奇的参数规则

    >>> dict({1:2},2=3)SyntaxError: keyword can't be an expression>>> dict({1:2},**{2: ...

  10. 分布式内存文件系统Tachyon

    UCBerkeley研发的Tachyon(超光子['tækiːˌɒn],名字要不要这么太嚣张啊:)是一款为各种集群并发计算框架提供内存数据管理的平台,也可以说是一种内存式的文件系统吧.如下图,它就处于 ...