armthumb交互工作内容摘要:

符号 , . EXPORT ThumbSub  使用 BX 实现返回  主调程序使用 BL 指令调用子程序 .  Note: AREA 将包含 : AREA Thumb,CODE,READONLY,INTERWORK 如果如此, armasm 将警告 : INTERWORK area directive is obsolete. Continuing as if apcs /inter selected. 13 TM 13 64v04 ARM / Thumb Interworking with ADS。 armasm AREA Arm,CODE,READONLY IMPORT ThumbSub ENTRY CODE32 ARMProg MOV r0, 1 BL ThumbSub。 call Thumb subroutine MOV r0, 0x18 LDR r1, =0x20206 SWI 0x123456。 ARM semihosting SWI END。 armasm apcs /interwork AREA Thumb,CODE,READONLY EXPORT ThumbSub CODE16 ThumbSub MOV r1, 2 BX lr。 return to caller END 汇编程序交互工作 (1) 14 TM 14 64v04 ARM / Thumb Interworking with ADS 汇编程序交互工作 (2)  使用 Debugger反汇编代码 : ARMProg 0x00008080: 0xe3a00001 : mov r0,1 0x00008084: 0xeb000004 : bl 0x809c。 (ThumbSub + 0x4) 0x00008088: 0xe3a00018 : mov r0,0x18 0x0000808c: 0xe59f1000 : ldr r1,0x8094。 =0x00020206 0x00008090: 0xef123456 : swi 0x123456 0x00008094: 0x00020206 : Literal Pool Value ThumbSub 0x00008098: 0x2102 : mov r1,2 0x0000809a: 0x4770 : bx lr  交互 veeners在下一个字的边界 0x0000809c: 0xe59fc000 : ldr r12,0x80a4。 =ThumbSub+0x1 0x000080a0: 0xe12fff1c : bx r12 0x000080a4: 0x00008099 : Literal Pool Value 15 TM 15 64v04 ARM / Thumb Interworking with ADS C / 汇编使用 Veneers交互工作  运行在一种状态下的 C 代码可能调用运行在另一种状态下的汇编程序,反之亦然。  这时的 veneers 由连接程序自动生成。  如果主调函数是 C 函数, 编译时使用 apcs /interwork  如果主调函数是汇编函数 , 汇编时使用 apcs /interwork 且返回使用 BX LR  任何使用这些的汇编程序必须符合 ATPCS 标准 ,( . 函数参数传递使用 r0r3 amp。 r12 不受保护的) 16 TM 16 64v04 ARM / Thumb Interworking with ADS 非交互的 Thumb 代码 允许 ThumbThumb调用 交互的Thumb 代码 非交互的 ARM 代码 允许 ARMARM调用 交互的ARM 代码 允许非交互的调用交互的 不可调用 允许ARM/Thumb。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。