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

中国十大发布信息网站排名中煤矿山建设集团网站

中国十大发布信息网站排名,中煤矿山建设集团网站,企业网站建设三网合一,成都平面设计培训学校有哪些目录 一、ARM架构 1、RISC指令集 2、ARM架构数据类型的约定 2.1 ARM-v7架构数据类型的约定 2.2 ARM-v8架构数据类型的约定 3、CPU内部寄存器 4、特殊寄存器 4.1 SP寄存器 4.2 LR寄存器 4.3 PC寄存器 二、汇编 1、汇编指令#xff08;常用#xff09; 2、C函数的…目录 一、ARM架构 1、RISC指令集 2、ARM架构数据类型的约定 2.1 ARM-v7架构数据类型的约定 2.2 ARM-v8架构数据类型的约定 3、CPU内部寄存器 4、特殊寄存器 4.1 SP寄存器 4.2 LR寄存器 4.3 PC寄存器 二、汇编 1、汇编指令常用 2、C函数的反汇编 2.1 让Keil生成反汇编 2.2 找到C函数的反汇编 2.3 分析 一、ARM架构 1、RISC指令集 ARM芯片属于精简指令集计算机(RISCReduced Instruction Set Computing)它所用的指令比较简单有如下特点 ① 对内存只有读、写指令 ② 对于数据的运算是在CPU内部实现 ③ 使用RISC指令的CPU复杂度小一点易于设计 对于上图所示的乘法运算a a * b在RISC中要使用4条汇编指令 ① 读内存a ② 读内存b ③ 计算a*b ④ 把结果写入内存 2、ARM架构数据类型的约定 2.1 ARM-v7架构数据类型的约定 byte --- 字节 --- 8bits --- 1字节 half word --- 半字 --- 16bits --- 2字节 word --- 字 --- 32bits --- 4字节 double word --- 双字 --- 64bits --- 8字节 2.2 ARM-v8架构数据类型的约定 byte --- 字节 --- 8bits --- 1字节 half word --- 半字 --- 16bits --- 2字节 word --- 字 --- 32bits --- 4字节 double word --- 双字 --- 64bits --- 8字节 quad word --- 四字 --- 128bits --- 16字节 3、CPU内部寄存器 无论是cortex-M3/M4还是cortex-A7CPU内部都有R0、R1、……、R15寄存器它们可以用来“暂存”数据。 4、特殊寄存器 4.1 SP寄存器 R13 --- 别名SP --- the Stack Pointer  堆栈寄存器     作用SP寄存器中存储的是执行栈空间的地址即栈指针     栈空间主要用于压栈保存现场出栈恢复现场。 4.2 LR寄存器 R14 --- 别名LR --- Link Register     作用用来保存返回地址     栈空间主要用于压栈保存现场出栈恢复现场。 4.3 PC寄存器 R15 --- 别名PC --- The Program Counter : 程序计数寄存器          作用PC寄存器中存储的是当前取指指令的地址表示当前指令地址写入新值即可跳转     每完成取指操作之后PC会自动加4指向下一条指令。 二、汇编 1、汇编指令常用 读内存Load # 示例 LDR  R0, [R1, #4]  ; 读地址R14, 得到的4字节数据存入R0 写内存Stroe # 示例 STR  R0, [R1, #4]  ; 把R0的4字节数据写入地址R14 加减 ADD R0, R1, R2  ; R0R1R2 ADD R0, R0, #1  ; R0R01 SUB R0, R1, R2  ; R0R1-R2 SUB R0, R0, #1  ; R0R0-1 比较 CMP R0, R1  ; 结果保存在PSR(程序状态寄存器) 跳转 B  main  ; Branch, 直接跳转直接使用PC寄存器执行指令跳转 BL main  ; Branch and Link, 先把返回地址保存在LR寄存器里再跳转先使用LR寄存器保存返回地址再使用PC寄存器执行指令跳转 2、C函数的反汇编 我们用一个简单的C函数添加进FreeRTOS工程中观察其反汇编 int add(volatile int a, volatile int b) {volatile int sum;sum a b;return sum; } 2.1 让Keil生成反汇编 点击魔术棒中的 Linker 找到文件输出位置 再点击 User 输入反汇编指令同时将上个步骤中提取的输出位置替换掉反汇编指令中的xxx 为了方便复制制作反汇编的指令如下 fromelf  --text  -a -c  --outputxxx.dis  xxx.axf 2.2 找到C函数的反汇编 找到C函数反汇编的文件 用 Notepad 打开并找到我们所定义的 add 函数 使用 add 函数位于我们所创建的FreeRTOS工程中的 diver_oled.c 中再次找到C函数被调用时的反汇编形式 2.3 分析 int add(volatile int a, volatile int b) {volatile int sum;sum a b;return sum; }int cnt 0; cnt add(cnt, 1); 在 cnt 调用 add 函数过程中第一个参数用 R0 来传输即 R0 cnt 第二个参数用 R1 来传输即 R1 #1。之后调用 add 函数用汇编形式表示BL add。 在 OLED_Test 中找到 add 被调用时的反汇编码可以更加深刻的理解。 当CPU执行 OLED_Test 中的 add 函数时cpu会读取地址得到机器码并执行机器码。 PUSH 就是写内存就是 Store 指令的变种会将括号内三个寄存器的值写入栈中并且调整栈的位置 设SPA A调用 PUSH 指令将 lr 、r1、r0 从高到底存入栈中每个数据为4字节则占用了12字节新得到的SPSP-12即SPA-12调用SUB指令即SSP-4调用 LDRD 指令将SP加4的位置读8个字节分别存入 r0、r1所以SP4之后SP对应红线上面一条横线SP的位置仅此时有效仅是为了汇编后面SP的位置还是位于红线处读取8个字节表示 r0 [SP,#4] cntr1 [sp,#8] 1调用ADD指令表示为 r0 r0 r1 cnt 1此时 cnt 成功计数调用 STR 指令将 r0 保存在 SP0 处红线处此时新的 r0 对应 add 函数中的 sum 变量汇编形式表示r0-[SP,#0]-sum调用 POP 指令低地址对应低标号的寄存器将数值清空将 LR 的地址对应 OLED_Test 汇编码中执行完 add 函数后面的地址存到 PC 寄存器即得到执行完整 add 函数后的结果并保存这样做主要是是为了再次执行 add 函数时栈中没有数据。
http://www.zqtcl.cn/news/210613/

相关文章:

  • 不备案的网站很慢网站双线主机优势
  • 南京电子商务网站建设23个营销专业术语
  • 建设银行官网官方网站学习网页制作的网站
  • 开发网站需要什么硬件今年最流行的装修风格
  • 门户网站建设中标结果百度资讯指数
  • 定制企业网站开发公司网站建设的6个基本步骤
  • 网站建设与维护案列网站作品怎么做
  • 茂名放心营销网站开发seo收费
  • 旅游网站品牌建设本地使用宝塔安装wordpress
  • 专门做外链的网站制作论坛类网站模板免费下载
  • 靖江建设行业协会网站投资做网站
  • 做网站视频背景潍坊网站制作建设
  • 深圳市官网网站建设哪家好百度抓取网站登录
  • 免费做cpa单页网站友情链接买卖代理
  • 免费网站建站排名中国最大的软件公司
  • 码云pages做静态网站广西建设培训网
  • 建设网站需要花钱吗网站seo方案策划书
  • 德阳网站怎么做seo陈木胜个人资料
  • 电子规划书商务网站建设wordpress主机推荐
  • wordpress设置多站点html5开发手机app
  • 移动互联和网站开发哪个好做推广便宜的网站有哪些
  • 极速网站建设定制价格微信公众号运营助手
  • .net制作网站开发教程在线修图编辑器
  • 哪些网站可以做详情页聊城高新区建设局网站
  • 湖南网站优化代运营山东建设厅证件查询网址
  • 以百度云做网站空间浙江外贸网站建设
  • 南通网站建设推广专家wordpress 信息流 主题
  • 网站培训机构有哪些大学生做企业网站
  • 网站培训班有哪些课程做的好的大学生旅行有哪些网站好
  • 昌江县住房和城乡建设局网站佛山建设网站制作