Seite 1 von 1

C++ mit Assembler

Verfasst: Di 3. Apr 2012, 20:31
von Cr0w
Ich war eigentlich immer in der Annahme das bei Assembler nur der linke Operand verändert wird was hier aber nicht der Fall ist !
kompiliert mit dem g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Code:
#include <iostream>
#include <stdio.h>
using namespace std;

int main( void )
{

int nVar1 = 3, nVar2 = 4;

   cout << "Zahl 1: " ;
   cin >> nVar1;

   cout << "Zahl 2: " ;
   cin >> nVar2;


asm ("add %%edx, %%eax \n"
: "=a" (nVar1)
: "d" (nVar2),"a" (nVar1)
);

   cout <<"ergibt = "<<(nVar1)<<endl;

return(0);
}

Verfasst: Di 3. Apr 2012, 20:31
von Anzeige

Re: C++ mit Assembler

Verfasst: Di 3. Apr 2012, 20:41
von Miss Rabbit
Kann es sein das du den AT&T-Syntax verwendest ?

Re: C++ mit Assembler

Verfasst: Di 3. Apr 2012, 20:51
von Cr0w
Miss Rabbit hat geschrieben:Kann es sein das du den AT&T-Syntax verwendest ?


ja schon aber die Befehle müssten doch ähnlich sein ....

Re: C++ mit Assembler

Verfasst: Mi 4. Apr 2012, 09:54
von xRamses
Ich war eigentlich immer in der Annahme das bei Assembler nur der linke Operand verändert wird was hier aber nicht der Fall ist !


Intel-Syntax: Ziel Quelle
At&t-Syntax: Quelle Ziel

BTW Du solltest statt
Code:
add %%edx, %%eax

eher
Code:
addl %%edx, %%eax

verwenden da sonst der Assembler rät und das glaub mir das willst du oft nicht :P

Re: C++ mit Assembler

Verfasst: Mi 4. Apr 2012, 09:58
von Cr0w
@xRamses JA DAS IST ES !

... ist ja verwirrend , bin eher den Intel-Syntax gewöhnt ....

... ist wie Bei Visual Basic ... da mach ich auch immer ";" am ende xD