当前位置:网站首页 > R语言数据分析 > 正文

ldrsw指令(ldrneh指令)

ENTER_CRITICAL


                                                ;OsEnterSum++


        LDR     R1, =OsEnterSum


        LDRB    R2, [R1]


        ADD     R2, R2, #1


        STRB    R2, [R1]


                                                ;关中断


        MRS     R0, SPSR


        ORR     R0, R0, #NoInt


        MSR     SPSR_c, R0


        MOVS    PC, LR


================================================================================


备忘如下:

1、触及SWI软中断,就不能不说ATPCS过程调用,将后续日志记录;

2、SWI异常一旦触发,内核硬件完成:
   进入Supervisor模式;
   拷贝CPSR至SPSR_svc
   拷贝异常返回地址至LR_svc







   将0x00000008装入PC

   因此,当触发SWI软中断前内核处于Supervisor模式,SPSR_svc、LR_svc中的值将被破坏;

3、SWI指令编码中自带24bit数据作为软中断号(swi_num),因此可通过取SWI指令编码获取软中断号;LDR r0,[lr,#-4]就是这样;

4、SWI_Exception_Function函数一般采用C编码(也可汇编),采用C编码可直接套用switch根据swi_nun软中断号切换,SWI_Exception_Function函数的编制是灵活的,比如可以为带参或不带参函数;

5、一个SWI调用允许带1~4个字型参数和1~4个字型返回值,触发SWI调用时四个参数依次保存在R0~R3中,返回值也存于R0~R3内,这和ATPCS函数调用一致;

6、在C中声明一个典型的无参无返回值的SWI调用为:”__swi(0x00) void IRQEnable();“这样随时都可以使用”IRQEnable();“触发一个软中断(中断号0),其允许IRQ中断的功能必须在 SWI_Exception_Function软中断处理函数中实现;

8、最后须要注意的:SP堆栈指针时为间接寻址,”MOV r1,sp“指令将R1也变成一个指针,其存放的内容为R0在RAM中的地址而非R0值;

9、还有一点:SWI调用带参和SWI_Exception_Function函数的带参,是两回事, SWI调用带参是指的是调用多少号软中断, SWI_Exception_Function函数是函数(软中断运行的参数)


Façade模式标准简化视图

Façade模式减少了客户必须处理的对象的数量,为子系统的一组接口提供一致的界面,可能是原有的系统的一部分,也可能增加新的功能,简化接口的使用,进行对原有的系统的隐藏和封装(MFC针对于Windows API编程,隐藏了消息的传递和映射的机制),相当于是一个封装层。

Façade模式适用于以下的情况

不需要使用原来的复杂的系统的所有的功能,并且可以创建一个新的类来包容访问原有的系统使用的所有规则创建的API是原有系统接口的一个子集,通常他是比原来的系统的API简单很多。

希望包装和隐藏原有的系统

希望使用现有系统的功能,并且增加一些新的功能

编写一个新类的代价小于让所有的人会使用原来的系统,或者在未来维护整个系统的代价


接口的转换:使原有的由于接口不兼容而不能一起工作的那些类一起工作。

使客户对象不必知道相应的细节,可以使用别人的程序

对于一类问题:使用一种共通的方式和其打交道――抽象类,抽象类定义相关的接口,实现在派生类中实现

Adapter模式最通用的用途是保持其他模式需要的多态,用Adapter模式将现存的类和他适当的抽象类进行适配

注意部分适配的问题

到此这篇ldrsw指令(ldrneh指令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!












































版权声明


相关文章:

  • entrust安卓(entrust安卓版免费下载)2026-04-24 20:00:05
  • ueditor编辑器上传图片(ueditor在线编辑器)2026-04-24 20:00:05
  • git推送到服务器(git推送到master)2026-04-24 20:00:05
  • Tornadoes 翻译(tornadoes翻译成英语)2026-04-24 20:00:05
  • pycharm怎么删除干净(pycharm怎么删除干净项目)2026-04-24 20:00:05
  • word文件对比查重(word文档对比查重)2026-04-24 20:00:05
  • yml文件配置redis(yml配置文件能不能用@value注入)2026-04-24 20:00:05
  • rknn模型转换(knn模型用来干嘛的)2026-04-24 20:00:05
  • 电脑剪辑视频的软件pr(电脑剪辑视频的软件ae)2026-04-24 20:00:05
  • 连接redis的linux命令(linux命令行连接redis)2026-04-24 20:00:05
  • 全屏图片