C 語言主程序調用 ARM 匯編函數 strcopy:
// C 代碼
extern void strcopy(char *d, const char *s);
int main() {
const char *srcstr = "abcdefghi";
char dststr[] = "ighfedcba";
strcopy(dststr, srcstr);
return 0;
}
STACK_TOP EQU 0x40002000
PRESERVE8
AREA SCopy, CODE, READONLY
EXPORT START
EXPORT strcopy
IMPORT main
ENTRY START
LDR R13, =STACK_TOP
B main
strcopy
LDRB r2, [r1], #1 @ 從源載入字節,r1+1
STRB r2, [r0], #1 @ 存入目標,r0+1
CMP r2, #0 @ 檢查是否為 '\0'
BNE strcopy @ 非零繼續
MOV pc, lr @ 返回
END
LDRB/STRB 字節訪問,後置自增 #1。CMP 設置標誌位,BNE 循環直到遇 '\0'。MOV pc, lr 通過鏈接寄存器返回。演示 C/ARM 混合編程全流程:聲明、參數約定、字節拷貝循環、返回機制。