我想編寫一個混合語言程序,其中部分代碼將用C語言編寫,部分代碼用匯編語言編寫。我被給了一個示例代碼,所以我知道我的工作應該是什麼樣子。如何運行混合語言程序
.globl _addArrayinA
_addArrayinA:
pushl %ebp
movl %esp,%ebp
subl $8,%esp
movl 8(%ebp), %ebx
xorl %esi,%esi
xor %eax,%eax
bak:
addl (%ebx),%eax
addl $4,%ebx
incl %esi
cmpl $10, %esi
jne bak
movl %ebp, %esp
popl %ebp
ret
# Return value is in %ea
以上是裝配件。
int addArrayinC(int *myArray, int num)
{
int c;
int i;
c = 0;
for (i=0; i<num; i++)
{c += *myArray;
myArray++;
}
return (c);
}
這是寫在C. 所述第二功能並在下面的主文件,這是爲了使用上述兩種功能。
#include <stdio.h>
#include <stdlib.h>
extern int addArrayinC(int *numbers,int count);
extern int addArrayinA(int *numbers, int count);
int main(void) {
int mynumbers[10]={1,2,3,4,5,6,7,8,9,0};
int sum;
sum = addArrayinC(mynumbers, 10);
printf("\nThe sum of array computed in C is : %d ",sum);
sum = addArrayinA(mynumbers, 10);
printf("\nThe sum of array computed in assembly is : %d ",sum);
return EXIT_SUCCESS;
}
我試圖在codeblocks中打開這三個文件,但無法運行它們。我不知道如何運行混合語言程序。通常,我使用cloud9進行代碼編譯。反正...我如何運行這樣的代碼?
你可以嘗試c中的內聯彙編。 https://gcc.gnu.org/onlinedocs/gcc/Using-Assembly-Language-with-C.html –
嘿謝謝!現在一切正常...... –
從來不知道有可能內聯asm。 雖然這不是我正在尋找它的工作正常,我認爲... 謝謝! :) –