android在armv4t中跑

本文介绍了如何处理ARM架构中特定的未定义指令,包括BLX、CLZ、LDRD等,并提供了替换宏定义和内联汇编的具体实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://benno.id.au/blog/2007/11/21/android-neo1973通过这篇文章。决定使用处理未定义指令这种方式。因为最近学了驱动嘛。这是一个练手的机会。

 

有下面这些指令:(试试吧)

OpcodeDesription[PDF ] Page NumberCASM
BLX(1)Branch, Link, and Exchange166N/A (Unused in Android)N/A (Unused in Android)
BLX(2)Branch, Link, and Exchange168

User:Cfriedt 20081028 Remove from inline assembly with something like

#ifdef HAVE_BLX ... (inline asm) ... #else ... (inline asm with equivalent blx code, as shown to the right) ... #endif

User:Cfriedt 20081028 Substitute with a macro reference such as

#ifdef HAVE_BLX #define BLX(a) / blx a #else #define BLX(a) / mov pc,lr / bx a #endif
CLZCount Leading Zeros175

User:Cfriedt 20081028 Remove from inline assembly with something like

#ifdef HAVE_CLZ ... (inline asm) ... #else ... (inline asm with equivalent clz code, as shown to the right) ... #endif

User:Cfriedt 20081029

#ifdef HAVE_CLZ #define CLZ(Rd,Rm) / clz Rd,Rm #else #define CLZ(Rd,Rm) / ... #endif ... CLZ(Rd,Rm)
LDRDLoad Registers Doubleword200

User:Cfriedt 20081028 Substitute different inline assembly code with something like

#ifdef HAVE_LDRD ... (inline asm) ... #else ... (inline asm with ldrd substituted) ... #endif

User:Cfriedt 20081028 Substitute with a macro reference such as

#ifdef HAVE_LDRD #define LDRD(a,b) / ldrd a,b #else #define LDRD(a,b) / ... #endif
PLDPreload Data240

User:Cfriedt 20081028 Remove from inline assembly with something like

#ifdef HAVE_PLD ... (inline asm) ... #else ... (inline asm with pld removed) ... #endif

User:Cfriedt 20081028 Remove or substitute with a macro reference such as

#ifdef HAVE_PLD #define PLD(a,b) / pld a,b #else #define PLD(a,b) #endif ... PLD(r0,#0)
SMLA<x><y>Signed Multiply-Accumulate291  
SMLAL<x><y>Signed Multiply Accumulate Long298  
SMLAW<y>Signed Multiply-Accumulate Word302  
SMUL<x><y>Signed Multiply316  
SMULW<y>Signed Multiply Word320  
QADDSaturating Add242  
QDADDSaturating Double and Add249  
QDSUBSaturating Double and Subtract251  
QSUBSaturating Subtract253  
STRDStore Registers Doubleword349

User:Cfriedt 20081028 Substitute different inline assembly code with something like

#ifdef HAVE_STRD ... (inline asm) ... #else ... (inline asm without strd) ... #endif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值