題目:用objdum -d sum.o反彙編sum.o, 在main.c中經過彙編調用sum編程
sum.c文件C語言代碼以下:測試
#include<stdio.h> int sum(int N,int arr[]) { int s=0; int i; for(i=0;i<N;i++){ s+=arr[i]; } return s; }
如今改成嵌入式彙編語言:code
#include<stdio.h> int sum(int N,int arr[]) { int s=0; int i; for(i=0;i<N;i++){ asm volatile("movl %2,%%ecx\n\t" "movl %1,%%ebx\n\t" "addl %%ecx,%%ebx\n\t" //使 %%ebx+=%%ecx :"=b"(s) //輸出s的值 :"b"(s),"c"(arr[i]) //s=%1對應ebx,arr[i]=%2對應ecx ); } return s; }
經過objdump -d sum.o反彙編:
blog
main.c文件:io
經過gcc運行,執行結果以下:asm
週末身體不太舒服,今天補上上週的測試。gcc