2017-2018-1 20179205 第三周测试 汇编混合编程
第三周 汇编混合编程
题目:用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;
}
现在改为嵌入式汇编语言:
#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反汇编:
main.c文件:
通过gcc运行,执行结果如下:
周末身体不太舒服,今天补上上周的测试。