freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arm編程技巧(編輯修改稿)

2025-03-27 08:42 本頁面
 

【文章內(nèi)容簡介】 0010 : LDMIB sp,{r12,r14} 0x000014 : ADD r0,r0,r12 0x000018 : ADD r0,r0,r14 0x00001C : LDR pc,{sp},4 caller2 0x000020 : STMFD sp!,{r2,r3,lr} 0x000024 : MOV r3,6 0x000028 : MOV r2,5 0x00002C : STMIA sp,{r2,r3} 0x000030 : MOV r3,4 0x000034 : MOV r2,3 0x000038 : MOV r1,2 0x00003C : MOV r0,1 0x000040 : BL func2 0x000044 : LDMFD sp!,{r2,r3,pc} int func2(int a,int b,intc, int,d,int e,int f) { return a+b+c+d+e+f。 } int caller2(void) { return func1(1,2,3,4,5,6)。 } This code is piled with “O2 Ono_autoinline” 20 TM 20 103v04 C/C++ Compiler Hints Tips 循環(huán)終止 ? 在 for(), while() do…while()的循環(huán)中,用減到 0代替加到某個(gè)值。 ? 比如,用下面的代替 : for (loop = 1。 loop = total。 loop++) //( ADD, CMP) 代替為: for (loop = total。 loop != 0。 loop) //( SUBS) ? 盡量減少循環(huán)的次數(shù) ? 代碼小,且使用更少的寄存器 Example... 21 TM 21 103v04 C/C++ Compiler Hints Tips Loop Termination ? Count up int fact1(int limit) { int i。 int fact = 1。 for (i = 1。 i = limit。 i++) { fact = fact * i。 } return fact。 } ? Count down int fact2(int limit) { int i。 int fact = 1。 for (i = limit。 i != 0。 i) { fact = fact * i。 } return fact。 } fact2 0x000000 : MOVS r1,r0 0x000004 : MOV r0,1 0x000008 : MOVEQ pc,lr 0x00000c : MUL r0,r1,r0 0x000010 : SUBS r1,r1,1 0x000014 : BNE 0x0c 0x000018 : MOV pc,lr fact1 0x000000 : MOV r2,1 0x000004 : MOV r1,1 0x000008 : CMP r0,1 0x00000c : BLT 0x20 0x000010 : MUL r2,r1,r2 0x000014 : ADD r1,r1,1 0x000018 : CMP r1,r0 0x00001c : BLE 0x10 0x000020 : MOV r0,r2 0x000024 : MOV pc,lr This code is piled with “O2 Otime” 22 TM 22 103v04 C/C++ Compiler Hints Tips 除法操作 (1) ? ARM核不含除法硬件 ? 除法通常用一個(gè)運(yùn)行庫函數(shù)來實(shí)現(xiàn) ? 運(yùn)行需要很多的周期 unsigned div(unsigned a, unsigned b) { return (b / a)。 } div B __rt_udiv unsigned div2(unsigned b) { return (b / 2)。 } div2 MOV r0,r0,LSR 1 MOV pc,lr ? 一些除法操作在編譯時(shí)作為特例來處理 ? 除 2操作,被左移代替 23 TM 23 103v04 C/C++ Compiler Hints Tips 除法操作 (2) ? 在 O1和 O2 (使用 Otime), 其他的常量將使用一個(gè)標(biāo)準(zhǔn)的乘法序列來完成 例如: ? 實(shí)時(shí)除法程序 ? 使用 CLZ指令 ? 只有 V5te體系結(jié)構(gòu)才有效。 ? 用下面的辦法來選擇 ? C pragma import __use_realtime_division ? Assembler IMPORT __use_realtime_division div10 MOV r1,r0 LDR r0,=0xCCCCCCCD UMULL r2,r1,r0,r1 MOV r0,r1,LSR 3 MOV pc,lr unsigned div10(unsigned c) { return (c / 10)。 } 24 TM 24 103v04 C/C++ Compiler Hints Tips 余數(shù) – 模算法 ? 余數(shù)的操作符 ‘%’, 通常使用模算法 ? 如果這個(gè)值的模不是 2的 n次冪,它將花費(fèi)大量的時(shí)間和代碼空間 ? 避免這種情況發(fā)生的辦法使用 if()作狀態(tài)檢查 ? 比如說 :count的范圍是 0到 59 count = (count+1) % 60。 用下面的句子代替 if (++count = 60) count = 0。 modulo ADD r1,r0,1 MOV r0,0x3c BL __rt_udiv MOV r0,r1 test_and_reset ADD r0,r0,1 CMP r0,0x3c MOVCS r0,0 這個(gè)代碼用 “O1 Ospace”編譯 25 TM 25 103v04 C/C++ Compiler Hints Tips 浮點(diǎn) ? 軟件浮點(diǎn)庫 (fplib) ? 默認(rèn): fpu softvfp (or softfpa) ? 浮點(diǎn)協(xié)處理器 ? VFP (ARM10 and ARM9) ? fpu vfp (or vfpv1 or vfpv2) ? FPA (eg ARM7 500fe) now obsolete ? fpu fpa ? 軟件
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1