最近在做專案的過程中碰到這樣的需求,提取了商業資訊之後,技術上的說法就是呼叫的程式要返回自己的位址。
開始考慮內嵌彙編。可是問題很多。最大的問題就是在gaio編譯器中不支援c的變數位址傳遞。可能是和arm彙編中使用十位的第一有關係。最後可用的解決方法是呼叫是先呼叫一段組合語言,這段組合語言得到呼叫的位址後再傳給實現功能的函式。另外我用的是gaio編譯器。比較少見的那種。
void cmn_debugassertwithc(bool bexpression, char *pcmessage,ulong calladdress)
#a**
extnal cmn_debugassertwithc
global @cmn_debugassert
@cmn_debugassert: equ $
s***b sp! ,
mov r2 , lr
bl @cmn_debugassertwithc
ldmia sp! ,
#enda**
構造嵌入式Linux系統 準備交叉編譯器
第二 檢視datasheet,如果編譯器預設的不是支援armv4t,在編譯器bin 目錄下建立若干個arm linux 對應arm none linux gnueabi 中的 指令碼,在其中新增對armv4t的支援。這裡我新增 mthumb 第三 製作fs時所需要的交叉編譯器的lib檔案放在arm ...
arm編譯器交叉編譯SDL
本人的編譯器為64位的arm編譯器 aarch64 linux gnu gcc 在配置編譯時注意按個人實際情況配置 編譯器和 host選項!tar vxf sdl2 2.0.14.tar.gz cd sdl2 2.0.14 根據個人實際情況配置!sudo vim etc environment例如,...
ARM交叉編譯器安裝
安裝arm交叉編譯器 zshh shaohua arm arm資料 cd exynos4412 lzy1 zshh zshh shaohua arm arm資料 exynos4412 lzy1 ls cross compile datasheet doc images rootfs schemati...