首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

ARM 匯編程序:C 語言調用 ARM 匯編實現字符串拷貝

     編輯:組合語言

混合編程框架

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;
}

ARM 匯編實現

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

關鍵點

  • 參數傳遞:ARM/AAPCS 規約,前 4 參數用 R0-R3。此處 R0=dest, R1=src。
  • LDRB/STRB 字節訪問,後置自增 #1。
  • CMP 設置標誌位,BNE 循環直到遇 '\0'。
  • MOV pc, lr 通過鏈接寄存器返回。
  • 調試時觀察 R0/R1 及目標內存變化驗證正確性。

小結

演示 C/ARM 混合編程全流程:聲明、參數約定、字節拷貝循環、返回機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved