Xcode inline Assembler

Gast #1577517
Lesenswert?

Moin,
ich habe mal eine Frage zur Assemblerprogrammierung mit Xcode. Benutzt 
Xcode Intel oder AT&T Syntax?
Ich möchte zuerst mal ein einfaches Programm zum Laufen kriegen, das 
einfach eine Variable in Assembler inkrementiert, also irgendwie so:
1
int main()
2
{
3
    int a=1;
4
    asm("mov ax,%0":"=i"(a));   //a nach eax kopieren, "=i" richtig für int?
5
    asm("inc ax");
6
    asm("mov %0,ax":"=i"(a));   //eax nach a zurückschieben
7
    cout<<a;          //Soll 2 ausgeben
8
    return 0;
9
}
Es ist länger her, dass ich Assembler programmiert habe, aber soweit ich 
weiß, sollte es so sinngemäß funktionieren. Ich weiß aber halt nicht, 
wie ich die C-Variablen in den Assembler bekomme. Dazu habe ich ein paar 
Tutorial gefunden, aber die zeigen nur bestimmte Beispiele, zum Beispiel 
mit "fsin" und wenn ich versuche diese Beispiele anzupassen (wie oben), 
gibt es Compilerfehler. Ich hoffe, es sieht nicht so aus, als ob ich 
nicht gesucht hätte, aber ich habe nichts gefunden, was mir dieses 
einfache Problem löst. Ist übrigens ein Alu MacBook mit Mac OS X 10.6 
und Xcode 3.0
Gast #1578268
Lesenswert?

Von http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html habe 
ich jetzt die Zeile asm ("incl %0" :"=a"(var):"0"(var));
übernommen und ins Programm eingebaut:
1
#include<iostream>
2
using namespace std;
3

4
int main(void)
5
{
6
  long var=0;    //long wegen incl
7
  asm ("incl %0" :"=a"(var):"0"(var));
8
  cout<<var;
9
  return 0;
10
}
Dabei bekomme ich aber jetzt den Fehler: Impossible constraint in 'asm'
asm volatile hat auch nichts gebracht. Liegt das vielleicht daran, dass 
ich das Programm für Mac compilieren will?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren