题目:用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