Forum: PC-Programmierung Xcode inline Assembler


von Dussel (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Xcode nutzt gcc als Compiler-Backend, mögicherweise reicht das aus, um 
die erforderliche Assembler-Syntax zu erahnen.

von Dussel (Gast)


Lesenswert?

Erahnen? Keine Ahnung. Aber mit gcc als Stickwort habe ich (mindestens) 
eine gute Quelle gefunden. Mal sehen ob es klappt. Danke

von Dussel (Gast)


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?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.