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;
}

如今改成嵌入式汇编语言: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

相关文章
相关标签/搜索