吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3975|回复: 84

[原创逆向图文] ARM汇编语言程序结构

  [复制链接]
1122cf 发表于 2020-11-3 16:53 | 显示全部楼层 |阅读模式

一:ARM汇编的规范


在ARM汇编中,所有标号都必须在一行顶格书写,且后面不需要添加高级语言所用的冒号,而所有的指令都不能顶格书写。ARM汇编器对标识符的大小写敏感,书写标号和指令时,字母大小写必须一致。在ARM汇编程序中,一条ARM指令、伪指令或寄存器名,可以全部为大写字母,也可以全部为小写字母,但不能大小写混合编写使用。注释使用“;”(分号),注释内容由“;”(分号)开始到此行结束,注释可以在一行的顶格书写。

标准的ARM指令格式为:[标号]  <指令|条件|S>  <操作数>[;注释]

源程序中允许有空行,适当的插入空行可以提高源代码的可读性。如果单行太长,可以使用字符“\”将其分行,“\”后不能有任何字符,包括空格和制表符等等。对于变量的设置,常量的定义,其标识符必须在一行的顶格书写。

汇编指令正确的例子和错误的例子如下:
正确的例子:

图片1.png

错误的例子:

图片2.png


二:符号


ARM 汇编中,符号可以代表地址、变量、数字常量,当符号代表地址时又称为标号,符号就是变量的变量名、数字常量的名称、标号,符号的命名规则如下:

1.符号由大小写字母、数字以及下划线组成;
2.除局部标号以数字开头外,其它的符号不能以数字开头;
3.符号区分大小写,且所有字符都是有意义的;
4.符号在其作用域范围内是唯一的;
5.符号不能与系统内部或系统预定义的符号同名;
6.符号不与指令助记符、伪指令同名。

三:常量


常量有数字常量、字符常量、布尔常量三种。

1.数字常量有三种表示方式:

十进制数,如:12,5,876,0;
十六进制数,如:0x4387,0xFF0, 0x1;
n 进制数,用n-XXX 表示,其中n 为2~9,XXX 为具体的数。如2-010111,8-4363156等。

2.字符常量


字符常量由一对单引号及中间字符串表示,标准C 语言中的转义符也可使用。如果需要包含双引号或$,必须使用""""和$$代替。
例如:Hello SETS "Hello World!"
Errorl SETS "The parameter ""VFH""error$$2"

3.布尔常量


布尔常量的逻辑真为{TRUE},逻辑假为{FALSE}。
例如:testno SETS {FALSE}


四:指令的基本格式及说明

ARM是指令的基本格式为:
<opcode> {<cond>} {s} <Rd>, <Rn> {,<operand2>}
其中<>号内的项是必须的,{}号内的项是可选的。

各项说明如下:
opcode: 指令助记符
cond: 执行条件
s: 是否影响CPSR寄存器的值
Rd: 目标寄存器
Rn: 第一个操作数的寄存器
operand2: 第二个操作数

条件码“cond”的使用可以实现高效的逻辑操作(节省跳转和条件语句),提高代码效率。所有的ARM指令都可以条件执行,而THUMB指令只有B(跳转)指令具有条件执行功能。如果指令不标明条件代码,将默认为无条件(AL)执行。

五:ARM指令条件域

ARM指令一般分为5个域:


第一个域是跟条件执行相关的cond,即条件码域;
第二个域是指令代码域,即opceode;
第三个域是地址基址Rn,即第一个操作数,为寄存器
第四个域是目标或源寄存器Rd;
第五个域是地址偏移或操作寄存器,操作数区,即Op2;

上述指令的5个域为:0000 0010 1001 0001 0000 0000 0000 1000

条件的指令执行中,cond有4位,共16种组合,跟CPSR配合决定指令是否执行,如表所示。

例如:指令ADDEQ R4,R3,#1,带EQ标志位,只有CPSR当中的Z位置才执行该指令。

其中,条件后缀和S后缀的关系如下:
1.如果既有条件后缀又有S后缀,则书写时S排在后面,如ADDEQS R1,R0,R2该指令在Z=1时执行,将R0+R2的值放入R1,同时刷新条件标志位。
2.条件后缀是要测试条件标志位,而S后缀是要刷新条件标志位。
3.条件后缀要测试的是执行前的标志位,而S后缀是依据指令的结果改变条件标志。

图片3.png

小结:
通过今天的分享,了解了在ARM汇编的规范、指令条件域以及ARM指令的格式:<opcode> {<cond>} {s} <Rd>, <Rn> {,<operand2>},其中<>号内的项是必须的,{}号内的项是可选的。


评分

参与人数 25HB +26 THX +11 收起 理由
lies + 1
attackmyth + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
极速菜 + 1
虚心学习 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
创客者V2.0 + 1
459121520 + 1
消逝的过去 + 1
娄胖胖 + 1
yexing + 1
boot + 1
别来无恙 + 1
zyyujq + 1
DeeDarrick + 1 [吾爱汇编论坛 52HB.COM]- 软件反汇编逆向分析,软件安全必不可少!
努力实现自由 + 1
dDack + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
成丰羽 + 1 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
上帝的恩赐 + 2 [吾爱汇编论坛52HB.COM]-感谢楼主热心分享,小小评分不成敬意!
我是好人 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
MoeRay + 1
ldljlzw + 1
playboy + 2
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
allenzjb + 1
firstcmm + 1 [快捷评语]--你将受到所有人的崇拜!
Shark恒 + 10 + 1 [快捷评语]--积极评分,从我做起。感谢分享!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
袁世闯 发表于 2020-11-3 17:28 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
xujinwen 发表于 2022-1-8 11:44 | 显示全部楼层

谢谢楼主分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
阿桂哥 发表于 2022-1-8 12:19 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
bnjzzheng 发表于 2022-1-13 23:05 | 显示全部楼层

多谢分享,多谢
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
拿着雪糕 发表于 2022-1-30 11:50 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
CAemdn4780 发表于 2022-2-26 09:12 | 显示全部楼层

帮顶一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
mSYxEdBpL 发表于 2022-2-26 09:38 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
hldcY791 发表于 2022-2-26 09:53 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Ail9274 发表于 2022-2-26 09:54 | 显示全部楼层

不知道说啥,给楼主顶一下吧!
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表