一、汇编语言基础

(断断续续的记录自己的笔记。。。2018-10-11)

1. mov指令

  基本用法: mov r0, #0

  mov指令是赋值指令,用法如上,把立即数0放入到寄存器r0中。

2. bl指令

  bl是跳转指令,1)跳转到某个位置去执行可以是汇编语言中的标号,也可以是某个c文件中的函数。2)把返回地址保存到lr寄存器中,返回地址就是下一条指令的地址

3. ldm和stm

  这两个和ldr、str是不同的,ldm和stm一次可以操作多个寄存器或者操作多次内存,目前我还没写过这个代码,只是在反汇编文件文件中看到过,比如我学过一个,如下:

ldmia sp, {fp,sp,pc}
...
stmdb sp!, {fp,ip,lr,pc}

  ia和db是完成操作而后地址递增和地址先减而后完成操作。以第二条来说,先减在存,把fp、ip、lr、pc寄存器的压入栈中,这几个寄存器是有顺序的,按照标R的标号,高标号存在高地址。sp后面的!是sp最后的值是修改过的值。这条指令:sp先减,再存pc(R15);再减,再存lr..................

4. ldr和str

  ldr是读寄存器,也可以像mov那样用,当操作数太大就不能用mov,必须用ldr,因为mov不能操作一个特别大(超出范围的数),而伪指令ldr可以,伪指令不是真的汇编指令,在编译时候,他会被拆分成几条真的汇编指令,完成工作。一次只操作一个寄存器或者操作一次内存

  str是写寄存器。用法如下:把数0x12345678放到寄存器r0中,再把这个数写入大r1指的地址中。

ldr r0, =0x12345678
str r0, [r1]

二、C语言基础

最新文章

  1. 四则运算之C++实现篇
  2. 对SharePreference的封装
  3. 【Lucene4.8教程之四】分析
  4. C# 之 静态字段初始化
  5. QT/C++ 智能指针
  6. Sqlserver 时间字段批量增加
  7. Image Style Transfer:多风格 TensorFlow 实现
  8. web服务器学习1---httpd-2.4.29源码手动编译安装
  9. Tips_一级菜单栏实现
  10. python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
  11. MongoDB update修改器 目录
  12. Java操作队列
  13. jQuery文档操作--append()、prepend()、after()和before()
  14. 20165326 java第三周学习笔记
  15. mongodb副本集升级步骤
  16. Excel:一维表和二维表 互转
  17. executeBatch()批量执行Sql语句
  18. 82.Linux之VMware10.0.4_x64安装
  19. Ant是什么
  20. OSGi是什么:Java语言的动态模块系统(一)

热门文章

  1. Poj2688cleaningrobot
  2. Podman and Buildah for Docker users
  3. openstack--10--知识点补充
  4. 我发起并创立了一个 EPWA 的 开源项目
  5. js 中逻辑为 false 的8种情况
  6. 亲测实验,stm32待机模式和停机模式唤醒程序的区别,以及唤醒后程序入口
  7. Spark分布式编程之全局变量专题【共享变量】
  8. Spring Boot - AOP(面向切面)
  9. github的markdown页内锚点以及本地资源链接
  10. ubutun 下配置php和postgresql