www.mikrocontroller.net

Forum: PC-Programmierung Xcode inline Assembler


Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
int main()
{
    int a=1;
    asm("mov ax,%0":"=i"(a));   //a nach eax kopieren, "=i" richtig für int?
    asm("inc ax");
    asm("mov %0,ax":"=i"(a));   //eax nach a zurückschieben
    cout<<a;          //Soll 2 ausgeben
    return 0;
}
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Dussel (Gast)
Datum:

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

Autor: Dussel (Gast)
Datum:

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

int main(void)
{
  long var=0;    //long wegen incl
  asm ("incl %0" :"=a"(var):"0"(var));
  cout<<var;
  return 0;
}
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.