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. cassandra 3.x官方文档(5)---探测器

    写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...

  2. Android仅2步实现 滚粗 汉堡导航栏效果~ 全新底部导航交互(滑动隐藏)

    本文同步自wing的地方酒馆 布吉岛大家有木有看这一篇文章,再见,汉堡菜单,我们有了新的 Android 交互设计方案 本库下载地址:https://github.com/githubwing/Bye ...

  3. JAVA面向对象-----this的概述

    this关键字代表是对象的引用.也就是this在指向一个对象,所指向的对象就是调用该函数的对象引用. 1:没有this会出现什么问题 1:定义Person类 1:有姓名年龄成员变量,有说话的方法. 2 ...

  4. 浅谈SSH框架

    在学习或者接触一个新的概念的时候,我们应该在脑海中发挥我们的搜索引擎,牵一发动全身的去想,这个知识跟我之前接触过的有哪些相同或者不同的地方,从这个角度去看那些新的知识和概念,经过旧知识和新知识的对比我 ...

  5. 学习Tensorflow,反卷积

    在深度学习网络结构中,各个层的类别可以分为这几种:卷积层,全连接层,relu层,pool层和反卷积层等.目前,在像素级估计和端对端学习问题中,全卷积网络展现了他的优势,里面有个很重要的层,将卷积后的f ...

  6. C语言实现简单黑客帝国代码流

    #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> ...

  7. Python pygame安装过程笔记

    今天看到一个教程,是关于Python安装pygame模块的.觉得很好,拿来分享一下. 安装Python 额,这个小题貌似在这里很是多余啊.但是为了照顾到刚刚学习Python的童鞋,我还是多啰嗦两句吧. ...

  8. Servlet之Request对象

    下面的方法可用在 Servlet 程序中读取 HTTP 头.这些方法通过HttpServletRequest 对象可用. 1    Cookie[] getCookies() 返回一个数组,包含客户端 ...

  9. Android开发学习之路--NDK、JNI之初体验

    好久没有更新博客了,最近一直在看一个仿微信项目,然后看源码并自己实现下,相信经过这个项目可以让自己了解一个项目中的代码以及种种需要注意的事项.不知不觉中博客已经快要40w访问量,而且排名也即将突破30 ...

  10. 使用Geolocation校正GDAL不支持的数据

    对于低分数据来说,常用的校正方式就是给定数据的经纬度查找表来进行校正.在GDAL中,这种校正方式叫Geolocation array.常用的数据有国外的MODIS数据,国内的如风云系列(FY)和海洋系 ...