完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。
虽然现在很少有程序使用汇编进行编写,但是了解一下还是很有必要的。了解这个有些bug找起来会快很多。我现在看一些执行起来很奇怪的代码,就直接看看对应的汇编部分,很多C语言中不易发现的问题,汇编一目了然。 相信了解过arm汇编的都听说过ARM指令集,Thumb指令集。现在很多处理器还有Thumb-2指令集(如STM32)。我不打算在开头去讲各种指令集有什么区别,一起看看各种指令集下的指令,一切就都清楚了。 ARM指令在机器中的表示格式是用32位的二进制数表示。计算机根据二进制代码去完成所需的操作。 ARM指令代码一般分为5个域; [31:28]是4位的条件码域(cond),4位条件码共有16种组合; [27:20]是指令代码域 (opcode)。 [19:16]是地址基址(Rn),为R0~R15共16个寄存器编码。 [15:12]是目标或源寄存器Rd,为R0~R15共16个寄存器编码。 [11:0]是地址偏移或操作寄存器、操作数区域 Op2。 汇编指令的表示格式 <>中的内容必不可少,{}的内容可省略。 { {S}决定指令的执行结果是否影响CPSR的值,使用该指令后缀则指令执行的结果影响CPSR的值,否则不影响。 例子:ADDEQS R0,R1,#8。其中操作码为ADD,条件为EQ,S表示执行结果影响CPSR寄存器。目的寄存器Rd为R0,第一个操作数Rn为R1,第二个操作为OP2为立即数#8。 小知识: 程序的执行指令都保存在存储器中。当计算机需要执行一条指令时,首先产生这条指令的地址,并根据地址去打开相应的存储单元,取出指令代码,CPU根据指令代码执行相应操作。 当处理器工作在ARM状态时,几乎所有的指令都根据CPSR中条件码的状态和指令的条件域有条件的执行。当执行条件满足时,指令被执行,否则,指令被忽略。根据上面所说,每条指令的条件码为[31:28]这4bit,共16种,每种条件码可用两个字母表示,这两个字符可以添加在指令助记符的后面和指令同时使用。在16中条件码中,有15种可以使用,第16种(1111)被系统保留。指令条件码如下表: |
|
|
|
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
654 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2242 浏览 1 评论
771 浏览 0 评论
1530 浏览 1 评论
2276 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:39 , Processed in 0.629177 second(s), Total 67, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号