android汇编代码,安卓逆向 |
您所在的位置:网站首页 › 安卓逆向arm汇编是什么 › android汇编代码,安卓逆向 |
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。目前在嵌入式开发、单片机开发、系统软件设计、某些快速处理、位处理、访问硬件设备等高效程序的设计方面有较多应用。 学习安卓逆向,最基础的就是要懂计算机语言,要看得懂程序结构,ARM是其中最为重要的知识点之一,我们今天就来简单谈谈ARM汇编语言程序结构。 一.ARM汇编规范 1.在ARM汇编中,所有的符号都必须在一行书写,在后面不用添加我们高级语言所用的分号。 2.ARM汇编器对标识符的大小写敏感,这个一定要注意,书写符号以及指令是字母大小写一定要一致。 3.在ARM汇编程序中,一条ARM指令,伪指令。寄存器名可以全部写为大写字母,也可以全部为小写字母,但是不能大小写混合编写使用。 4.注释使用(冒号),注释内容由(冒号)开始到执行结束。 [符号] [;注释] 源程序中可以有空行,适量的插入空行可以提高源代码的可读性。 如果单行太长,可以使用字符”\”将其分行,”\”后不能有任何字符,包括空格和制表符等。我们来看两个例子就明白了。 正确的: 错误的: 二.ARM中的符号 在ARM 汇编中,符号可以代表地址、变量、数字常量。 当符号代表地址时又称为标号,符号就是变量的变量名、数字常量的名称、标 号,符号的命名规则如下: a. 符号由大小写字母、数字以及下划线组成; b. 除局部标号以数字开头外,其它的符号不能以数字开头; c. 符号区分大小写,且所有字符都是有意义的; d. 符号在其作用域范围你必须是唯一的; e. 符号不能与系统内部或系统预定义的符号同名; f. 符号不要与指令助记符、伪指令同名。 三.常量 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指令的格式 指令的基本格式及说明: ARM是三地址指令格式,指令的基本格式为: {}{s},{,} 其中号内的项是必须的,{}号内的项是可选的。 各项说明如下: opcode: 指令助记符 cond: 执行条件 s: 是否影响CPSR寄存器的值 Rd: 目标寄存器 Rn: 第一个操作数的寄存器 operand2: 第二个操作数 条件码“cond”的使用可以实现高效的逻辑操作(节省跳转和条件语句),提高代码效率。所有的ARM指令都可以条件执行,而THUMB指令只有B(跳转)指令具有条件执行功能。如果指令不标明条件代码,将默认为无条件(AL)执行。 五.指令的条件域 eq:相等/z=1; ne:不相等/标志z=0; hi:无符号数大于/c=1,z=0; cs/hs:无符号数大于或等于/c=1; cc/lo:无符号数小于/c=0; ls:无符号数小于或等于/c=0,z=1; gt:有符号数大于/z=0,n=v;ge:有符号数大于或等于/n=v; lt:有符号数小于/n!=v;le:有符号数小于或等于/z=1,n!=v; mi:负数/n=1;pl:整数或0/n=0; vs:溢出/v=1;vc:没有溢出 总结: ARM汇编的特点:汇编语言,又称为助记符语言。它的大多数指令都是单周期指令;大多数指令都是可以有条件执行的。学好语言只是是学好安卓逆向的基础,一定要脚踏实地,先打好基础再去深入学习。r如果有什么问题或者建议欢迎在评论区留言交流或者私聊沟通哦~ |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |