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

相關文章
相關標籤/搜索