《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 解決方案 > 澄清匯編數(shù)組和匯編及嵌入?yún)R編之不同

澄清匯編數(shù)組和匯編及嵌入?yún)R編之不同

2017-06-22
關(guān)鍵詞: 匯編語言

void MACRO_RETI(void)
{
asm_RETI() //里面就是一句匯編的RETI,它會(huì)搶先與函數(shù)自己的RET執(zhí)行
}; //這個(gè)函數(shù)自己的RET永遠(yuǎn)不執(zhí)行到,因?yàn)樘吡?br/>
void __HotASM_START__ (void) //啟動(dòng)時(shí)運(yùn)行的代碼
{
MACRO_CLR_EA; //關(guān)中斷
MACRO_Check_Crack; //反破解陷阱
MACRO_RETI(); //釋放中斷優(yōu)先級
MACRO_RETI(); //再釋放一次
MACRO_LJMP_ANY(main); //用壓棧和RET做的任意位置長跳轉(zhuǎn),地址是main主程序
}; //這里其實(shí)會(huì)有個(gè)RET

     


菜農(nóng)來澄清匯編數(shù)組和匯編及嵌入?yún)R編最大的不同:
匯編數(shù)組內(nèi)實(shí)際存放的是數(shù)據(jù)而非代碼,但用函數(shù)指針強(qiáng)行跳入后,數(shù)據(jù)變“升華”
為代碼。
它本來就是為動(dòng)態(tài)鏈接而設(shè)計(jì),故編譯期間是找不到靜態(tài)地址的,至少俺現(xiàn)在無
好辦法。
即使能找到靜態(tài)地址,如匯編的:
lcall xxxx; ajmp xxx
都屬于此類。
匯編數(shù)組是吳旭光教授與菜農(nóng)為以后能在任何MCS/ARM/DSP上運(yùn)行OS
所參照PC的動(dòng)態(tài)鏈接庫DLL/LIB所設(shè)計(jì)的。
以前雖在DSP上應(yīng)用,但很局限。
這次在51上大面積推廣,故菜農(nóng)熬夜趕制了HotASM,HotCOM.HotMACRO等,
這樣可以用匯編數(shù)組(宏)通過COM接口直接相互訪問,而且可以和C函數(shù)通訊。
最近版本已全面支持C函數(shù)調(diào)用匯編數(shù)組宏,且宏在某些語句要比C精煉的多。
并且很容易加入“反逆向代碼”且不影響正常程序。
所以,匯編數(shù)組的編寫應(yīng)該基于動(dòng)態(tài)鏈接的思想,雖然這樣代碼效率會(huì)影響些
但不會(huì)影響主流。
菜農(nóng)是實(shí)用主義,不愛說教,只看結(jié)果,不管過程。
所以不知XWJ的MACRO_RETI是否能運(yùn)行???
課畢


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。