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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.