Ich möchte ein Programm mit mehreren Sprachen schreiben, in dem ein Teil des Codes in C und ein Teil des Codes in Assembly geschrieben wird. Ich bekam einen Beispielcode, also weiß ich, wie meine Arbeit aussehen soll.Wie führe ich ein Programm mit mehreren Sprachen aus?
.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
Oben ist der Montageteil.
int addArrayinC(int *myArray, int num)
{
int c;
int i;
c = 0;
for (i=0; i<num; i++)
{c += *myArray;
myArray++;
}
return (c);
}
Dies ist die zweite Funktion in C geschrieben Und unten ist die Hauptdatei, die über zwei Funktionen sollte verwenden.
#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;
}
Ich habe versucht, diese drei Dateien in Codeblöcke zu öffnen, aber bekommen konnte sie nicht laufen. Ich habe keine Ahnung, wie man ein gemischtes Sprachprogramm betreibt. Im Allgemeinen verwende ich cloud9 für Code-Zusammenstellungen. Wie auch immer ... Wie kann ich Code so laufen lassen?
können Sie versuchen, Inline-Montage in c. https://gcc.gnu.org/onlinedocs/gcc/Using-Assembly-Language-with-C.html –
Hey danke! jetzt funktioniert alles ... –
Ich wusste nie, dass es möglich ist, asm inline. Obwohl das nicht genau das ist, was ich suchte, funktioniert es gut, ich denke ... Danke! :) –