历史上的今天
今天是:2025年12月07日(星期日)
2022年12月07日 | s3c2440裸机之中断向量的写法(一)
2022-12-07 来源:zhihu
直接使用跳转指令(B)
b reset b undefined_instruction b software_interrupt b prefetch_abort b data_abort b not_used b irq b fiq /* ... */
反汇编后是这个样子的(链接时的起始地址为0x33f80000):
33f80000 <.text>: 33f80000: ea000006 b 33f8002033f80004: ea000006 b 33f80024 33f80008: ea000006 b 33f80028 33f8000c: ea000006 b 33f8002c 33f80010: ea000006 b 33f80030 33f80014: ea000006 b 33f80034 33f80018: ea000006 b 33f80038 33f8001c: ea000006 b 33f8003c 33f80020: eafffffe b 33f80020 33f80024: eafffffe b 33f80024 33f80028: eafffffe b 33f80028 33f8002c: eafffffe b 33f8002c 33f80030: eafffffe b 33f80030 33f80034: eafffffe b 33f80034 33f80038: eafffffe b 33f80038 33f8003c: eafffffe b 33f8003c
分析B指令:
Branch instruction contains a signed 2's complement 24 bit offset. This is shifted left two bits, sign extended to 32
bits, and added to the PC. The instruction can therefore specify a branch of +/- 32Mbytes. The branch offset must
take account of the prefetch operation, which causes the PC to be 2 words (8 bytes) ahead of the current instruction.
Branch指令包含了一个24位的二进制补码。将二进制补码左移两位,带符号扩展为32位,然后与PC相加。所以指令能够跳转的空间为±32M
在计算PC值得时候,要考虑到指令预取,PC的值为当前指令值加2 word(8字节)。

第一条指令的二进制码为0xea000006,对照B指令的格式,可以得出:
Cond = 1110 always,也就是无条件执行
L = 0 不需要保存PC
Offset = 0x06
则跳转后的PC值为:
PC = PC + 0x06<<2 = PC + 24。
如果当前程序运行于0地址,则 PC = 0 + 8 + 24 = 32 = 0x20,此时0x20存储的为reset指令,可以正确跳转。
如果当前程序运行于0x33f80000,则 PC = 0x33f80000 + 8 + 24 = 0x33f80020,此时0x33f80020存储的为reset指令,可以正确跳转。
所以得出结论:B可以在±32M空间内跳转,且为位置无关指令。
PS:位置无关指令的意思是,无论代码实际运行的物理地址是哪里,都可以正确执行。
史海拾趣
|
全球汽车半导体面临极大的市场机会,但设计工程师同样面临在成本、功耗、安全性等多方面的技术挑战。本文以可接收和发送数据的最新智能应答器为例,向中国汽车设计工程师介绍了在汽车无线接入系统设计中解决这些挑战的技术方法。 … 查看全部问答> |
|
用“复杂”来形容当今的汽车是再恰当不过的一个词。安全、操控、驱动和娱乐仅仅是依赖电子/电气架构的部分子系统。如今的驾驶者都希望他们的座驾能够无限精准且不间歇地运转。但是控制整个汽车的电子神经系统的内部却是如此的复杂。如今,大部分汽 ...… 查看全部问答> |
|
单片机音乐播放中歌曲的代码怎样弄出来的? 我看了网上的一些教程。。一个个的算很麻烦。。而且我对音乐不熟悉。 这样效率很低。。有没有一些快点的方法? 先在这里谢了~… 查看全部问答> |
|
编程环境:evc 程序的功能:点击按钮弹出对话框 情况说明: 在evc下采用MFC编写应用程序,实现点击按钮button1,弹出对话框,用鼠标点击,没有问题,可以正常运行,点击键盘上的ENTER键(确定),也可以弹出对话框。 由于需要进行按钮美化,将b ...… 查看全部问答> |
|
前面的是个阻容衰减电路,在衰减100倍时,跟随输出时正常的,但衰减10倍的时候跟随输出被放大了,要求10M带宽,实际仿真的时候都正常,但我搭出电路却不是那么回事了,似乎是跟随前的输入阻抗引起的,但跟随的输入阻抗很高,困惑中··· [ 本帖最 ...… 查看全部问答> |
|
最近想DIY一个遥控电源插座,希望大家给个建议:收集了一些资料,但感觉不太满意,如下:PH303A×2红外脉冲发射电路如下图所示,调节RP1,使其振荡频率为12kHz.红外遥控接收电路:… 查看全部问答> |
|
//说明:水位智能控制。20%-40%-60%-80%-99%继电器输出. //时钟设定,一路时间智能控制继电器输出, //水泵智能控制继电器输出。 //水泵工作时间智能控制继电器输出 #include #include #define Fosc (11059200) //Board cyrstal ...… 查看全部问答> |




