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运行,执行结果如下:

周末身体不太舒服,今天补上上周的测试。

posted @ 2017-11-13 21:47  20179205王雅哲  阅读(210)  评论(1编辑  收藏  举报