打印

ARM体系结构与汇编指令

[复制链接]
472|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大帝七七|  楼主 | 2017-10-25 17:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个概念:指令与伪指令
汇编)指令是CPU机器指令的助记符,经过编译后会得到一串10组成的机器码,可以由CPU读取执行。
(汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。
两种不同风格的ARM指令
ARM官方的ARM汇编风格:指令一般用大写、Windows中IDE开发环境(如ADS、MDK等)常用。如: LDR R0, [R1]
GNU风格的ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, [r1]
ARM汇编特点1:LDR/STR架构
ARM采用RISC架构,CPU本身不能直接读取内存,而需要先将内存中内容加载入CPU中通用寄存器中才能被CPU处理。
ldr(load register)指令将内存内容加载入通用寄存器。
str(store register)指令将寄存器内容存入内存空间中。
ldr/str组合用来实现 ARM CPU和内存数据交换
ARM汇编特点2:8种寻址方式
寄存器寻址                        mov r1, r2
立即寻址                                mov r0, #0xFF00
寄存器移位寻址                mov r0, r1, lsl #3
寄存器间接寻址                ldr r1, [r2]
基址变址寻址                        ldr r1, [r2, #4]
多寄存器寻址                        ldmia r1!, {r2-r7, r12}
堆栈寻址                                stmfd sp!, {r2-r7, lr}

相对寻址                     beq flag
               flag:
ARM汇编特点3:指令后缀
同一指令经常附带不同后缀,变成不同的指令。经常使用的后缀有:
B(byte)功能不变,操作长度变为8位
H(half word)功能不变,长度变为16位
S(signed)功能不变,操作数变为有符号
如 ldr ldrb ldrh ldrsb ldrsh
S(S标志)功能不变,影响CPSR标志位
如 mov和movs                movs r0, #0
ARM汇编特点4:条件执行后缀
ARM汇编特点5:多级指令流水线

相关帖子

沙发
airwill| | 2017-10-25 21:46 | 只看该作者
用 ARM 的都不用汇编了, 就连看, 也难得看一下了.
有时间, 多研究一些应用方面的知识吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝