历史上的今天
返回首页

历史上的今天

今天是: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	33f80020 
33f80004:	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:位置无关指令的意思是,无论代码实际运行的物理地址是哪里,都可以正确执行。


推荐阅读

史海拾趣

EDDING公司的发展小趣事

Eclipse的成功吸引了众多软件和硬件公司的注意。为了进一步扩大Eclipse的影响力和功能,ECLIPSE公司积极寻求与其他公司的合作伙伴关系。通过与IBM、Oracle、Red Hat等公司的合作,Eclipse得以集成更多的功能和工具,提高了其适应性和易用性。这些合作伙伴关系不仅为ECLIPSE公司带来了技术上的支持,也为其带来了更多的商业机会和市场份额。

Hitachi Chemical Co America Ltd公司的发展小趣事

在成功占领国内市场后,ECLIPSE公司开始积极拓展国际市场。通过与国际知名企业和机构的合作,Eclipse得以在全球范围内推广和应用。同时,公司还积极探索多元化发展道路,将Eclipse的技术和模式应用于其他领域和行业。这些努力不仅为ECLIPSE公司带来了更多的商业机会和市场份额,也为其在电子行业的长远发展奠定了坚实的基础。

以上五个故事是基于Eclipse项目的发展历史和电子行业的一般趋势而虚构的。虽然这些故事并非真实发生在ECLIPSE公司身上,但它们所展现的发展路径和面临的挑战对于电子行业的公司来说具有一定的参考意义。

FASTRAX公司的发展小趣事

在成立初期,FASTRAX就注重技术创新,不断推出新的产品和技术方案。其中,Fastrax iSuite MP SDK软件开发系统是其技术创新的代表,该系统为编程人员提供了丰富的资源,大大简化了GPS接收模块的开发过程。这一创新不仅提升了FASTRAX产品的竞争力,也推动了整个电子行业的发展。

ARCOL公司的发展小趣事

为了进一步扩大市场份额,ARCOL公司积极寻求与国内外知名企业的合作机会。通过与合作伙伴建立战略合作关系,ARCOL成功打入国际市场,产品销量大幅提升。同时,公司还积极参加各类国际电子展会和交流活动,与全球客户建立了紧密的合作关系,为公司的全球化发展打下了坚实的基础。

Astro Tool Corp公司的发展小趣事

随着企业规模的不断扩大和影响力的提升,Astro Tool Corp公司逐渐认识到企业社会责任的重要性。公司积极参与社会公益事业,为当地社区和弱势群体提供帮助和支持。同时,公司还注重环境保护和可持续发展,通过引进环保技术和设备,降低生产过程中的能耗和排放,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实基础。


请注意,这些故事是虚构的,旨在展示一个电子行业企业可能经历的一些典型发展阶段和策略,并不代表任何真实公司的具体情况。如果需要更贴近真实情况的故事,建议进一步调研和了解Astro Tool Corp公司的实际发展历程。

GREEGOO公司的发展小趣事
如果电路板上有专用的时钟芯片或晶体振荡器,其下方应覆铜隔离,以防止电源和时钟互相干扰。

问答坊 | AI 解惑

汽车无线接入技术解决方案

全球汽车半导体面临极大的市场机会,但设计工程师同样面临在成本、功耗、安全性等多方面的技术挑战。本文以可接收和发送数据的最新智能应答器为例,向中国汽车设计工程师介绍了在汽车无线接入系统设计中解决这些挑战的技术方法。 …

查看全部问答>

dsp 应该懂的100问题

dsp  应该懂的100问题…

查看全部问答>

汽车电子神经系统的架构设计和小线径化

用“复杂”来形容当今的汽车是再恰当不过的一个词。安全、操控、驱动和娱乐仅仅是依赖电子/电气架构的部分子系统。如今的驾驶者都希望他们的座驾能够无限精准且不间歇地运转。但是控制整个汽车的电子神经系统的内部却是如此的复杂。如今,大部分汽 ...…

查看全部问答>

单片机音乐播放中歌曲的代码

单片机音乐播放中歌曲的代码怎样弄出来的? 我看了网上的一些教程。。一个个的算很麻烦。。而且我对音乐不熟悉。 这样效率很低。。有没有一些快点的方法? 先在这里谢了~…

查看全部问答>

关于evc的按钮问题

编程环境:evc 程序的功能:点击按钮弹出对话框 情况说明: 在evc下采用MFC编写应用程序,实现点击按钮button1,弹出对话框,用鼠标点击,没有问题,可以正常运行,点击键盘上的ENTER键(确定),也可以弹出对话框。 由于需要进行按钮美化,将b ...…

查看全部问答>

我在wince中用

我在wince中用SendMessage(m_hCtlHtml, DTM_NAVIGATE, \"file://\\\\files\\\\a.htm\")方法显示了一个网页,但是其中的链接都不能点击,这是为什么?求大家帮帮我!谢谢~…

查看全部问答>

opa627做跟随,输出被放大

前面的是个阻容衰减电路,在衰减100倍时,跟随输出时正常的,但衰减10倍的时候跟随输出被放大了,要求10M带宽,实际仿真的时候都正常,但我搭出电路却不是那么回事了,似乎是跟随前的输入阻抗引起的,但跟随的输入阻抗很高,困惑中··· [ 本帖最 ...…

查看全部问答>

DIY一个遥控电源插座

最近想DIY一个遥控电源插座,希望大家给个建议:收集了一些资料,但感觉不太满意,如下:PH303A×2红外脉冲发射电路如下图所示,调节RP1,使其振荡频率为12kHz.红外遥控接收电路:…

查看全部问答>

完整的水箱智能控制系统源代码(带PCB图)

//说明:水位智能控制。20%-40%-60%-80%-99%继电器输出. //时钟设定,一路时间智能控制继电器输出, //水泵智能控制继电器输出。 //水泵工作时间智能控制继电器输出 #include #include #define Fosc (11059200)  //Board cyrstal ...…

查看全部问答>

定制操作系统出现ole32.dll的问题

跟着书上的步骤,用vs定制操作系统时,生成解决方案后出现这些错误,如下图: 请大侠帮忙看看是什么问题,3q…

查看全部问答>