- 匯編語言編程基礎:基于LoongArch
- 孫國云 敖琪 王銳
- 561字
- 2023-03-10 16:38:18
1.4 龍芯匯編語言程序編寫示例
和C語言類似,匯編程序也是以函數(也稱為方法)為單位編寫,函數可以有輸入參數或者輸出參數。匯編程序所在文件稱為匯編源文件(擴展名為.S)。編寫后的匯編源文件使用GCC編譯器進行編譯鏈接,和其他C語言文件形成最終可執行的二進制文件(即內部已是機器指令)。龍芯匯編源文件的編寫、編譯、執行全過程的示例如下:
#文件add.S
#接口定義 int add_f(int a, int b, int c, int d)
#功能定義:return (a+b+c+d)
.text
.align 2
.globl add_f
.type add_f,@function
add_f:
add.w $a0,$a0,$a1
add.w $a0,$a0,$a2
add.w $a0,$a0,$a3
jr $ra
.size add_f, .-add_f
add.S源文件里實現了一個add_f函數,其功能為實現4個32位整型數據(分別為寄存器a0、a1、a2和a3)的加法操作,并將結果返回(使用寄存器a0作為返回值)。匯編指令“jr $r1”意為函數返回。
接下來C語言文件test.c對這個匯編源文件中的匯編程序進行調用。
#include <stdio.h>
extern int add_f(int a, int b, int c, int d); //外部函數引用
int main(){
int ret = add_f(1, 2, 3, 4); //調用add.S中的匯編函數add_f
printf("ret = %d\n", ret); //輸出結果
return 0;
}
C語言文件test.c對匯編程序的調用與對其他C語言外部函數的調用方式是一致的,使用前通過關鍵字extern聲明即可。
下面通過GCC編譯器將匯編源文件add.S和C語言文件test.c編譯成最終可執行文件test_add。
$ gcc test.c add.S -o test_add
最后我們可以運行這個可執行文件test_add并查看結果,結果顯示為10(1+2+3+4),說明匯編源程序編寫和執行正確。
$ ./a.out
ret = 10
可見,編寫匯編語言程序還是還挺簡單的。龍芯匯編源程序更詳細的語法和編寫方式會在后續章節中詳細介紹。
推薦閱讀
- Advanced Quantitative Finance with C++
- What's New in TensorFlow 2.0
- 深入淺出Android Jetpack
- jQuery開發基礎教程
- 軟件品質之完美管理:實戰經典
- Lighttpd源碼分析
- 微服務從小白到專家:Spring Cloud和Kubernetes實戰
- 持續輕量級Java EE開發:編寫可測試的代碼
- Processing創意編程指南
- Instant Debian:Build a Web Server
- Arduino計算機視覺編程
- FPGA嵌入式項目開發實戰
- Python語言科研繪圖與學術圖表繪制從入門到精通
- Mastering Docker
- PyQt編程快速上手