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