- 論壇徽章:
- 0
|
本帖最后由 sqfasd 于 2011-11-15 09:28 編輯
void memcpy_32(void *dst, void *src, unsigned int size)
{
__asm
{
LDR R1,[dst]
LDR R2,[src]
MOV R0,size
LOOP:
LDMIA R2!,{R3-R10}
STMIA R1!,{R3-R10}
SUBS R0, R0, #32
BNE LOOP
}
}
static char data[320*480*2] = {0};
for(i=0;i<10;i++){
memcpy_32(screen, data, sizeof(data));
}
使用該函數(shù)的場景就是將一段存在棧中的320*480*2大小的數(shù)據(jù)拷貝到指定的顯示緩沖區(qū)上
編譯工具是ads1.2
運行環(huán)境是手機平臺MTK6236 11A
我遇到的問題是,一運行這段代碼,系統(tǒng)就崩潰,屏幕顯示fatal error,和一個出錯的地址。
好像是內存越界了,問題可能出在LDMIA和STMIA兩個指令。
對底層的技術不是太熟,但很有興趣,求指導 |
|