当前位置: 首页 > article >正文

ARM,汇编指令

一、汇编指令

       1、搬移指令

              mov r0 ,#3

            mov r1,r0

            msr cpsr,r0

         mrs r0,cpsr

       2、条件执行及标志位

              cmp

              moveq

              movgt

       3、机器码

              1)、立即数合法性

              2)、立即数不合法

                     ldr r0,=0x12345678 伪指令解决不合法的问题

前4位表示16个数,一个数移动2次。

后8位表示数据位,存储数据位。

       4、逻辑指令

              AND (&)

              orr

              bic

              tst

       5、算数指令

              add

              sub -

              mul *

6、跳转指令

       b

       bl

   

.text
main:
    mov r1,#0
       mov r0,#2@第一个参数用r0来进行描述
       bl func1
main_end:
       b main_end
func1:
    mov r6,lr
       cmp r0,#2
        bleq fun2
        blne fun3

func1_end:
       mov pc,r6
fun2:
       add r0,r0,#3
       mov pc,lr
fun3:
    sub r0,r0,#1
       mov pc,lr
       .end

 

7、load/store指令

       load/store架构 存储器之间不能直接进行数据拷贝,必须借助cpu的寄存器做中转。存储器到寄存器:load,寄存器到存储器store。

       ldr/str指令

等价于以下

1、Rd=*Rn

2、Rd=*(Rn+offset)

3、Rd= *(Rn+offset), Rd=Rn+offset;

4、加载位于标签localdata处的单词;

5、Rd=*Rn ,Rn=Rn+offset;

store与load相反 如第一个就是*Rn=Rd

    

       ldmia/stmia批量操作指令

      ia后置++,ib:前置++,da后减--,db前减--

       stmfd/ldmfd堆栈指令

           stmfd sp!,{r0-r12,lr} @入栈

           ldmfd sp!,{r0-r12,pc}^ @出栈 ^:cpsr=spsr 恢复工作模式

8、swi指令

       软中断指令

       swi 0x02 会产生软中断 软中断号为2


http://www.kler.cn/a/106422.html

相关文章:

  • 大三学生实习面试经历(1)
  • 15-1.Java 网络编程之 InetAddress(InetAddress 常用静态方法、InetAddress 常用方法)
  • 【0x001C】HCI_Write_Page_Scan_Activity详解
  • ZooKeeper集群指南-新增节点配置
  • 从零开始学习 sg200x 多核开发之 uboot 网络功能使能
  • oneplus3t-Lineage16.1-Android.bp
  • Linux MMC子系统 - 2.eMMC 5.1总线协议浅析
  • 关于前端如何下载后端接口返回content-type为application/octet-stream的文件
  • linux find命令搜索日志内容
  • leetcode_39 组合总和
  • J2EE项目部署与发布(Windows版本)
  • windows 设置nginx、redis、jar包开机自启、mysql自动备份
  • cleanmymacX4.14免费版mac清除浏览器缓存软件
  • Ocelot简易教程目录
  • 大数据Flink(一百零二):SQL 聚合函数(Aggregate Function)
  • 使用Selenium和Java编写爬虫程序
  • Sql Server中的表组织和索引组织(聚集索引结构,非聚集索引结构,堆结构)
  • Python----break关键字对while...else结构的影响
  • 【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》
  • oracle19c配置驱动
  • DoLa:对比层解码提高大型语言模型的事实性
  • 第三篇:实践篇 《使用Assembler 实现图片任意切割功能》
  • 企业信息集成
  • 36基于matlab的对分解层数和惩罚因子进行优化
  • Tomcat的动静分离
  • spring监听请求执行结束,移除当前ThreadLocal数据两种方法