amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > g++ inline asm [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

26.06.2005, 14:21 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Hi,
ich habe da mal eine Frage zur syntax.
Ich möchte in meinem c++ quelltext folgenden asm code einbauen:

void outportb(UINT portid, BYTE value)
{
__asm mov edx,portid
__asm mov al,value
__asm out dx,al
}

wie man sehen kann ist das schon inline asm aber für einen anderen Compiler. Ich habe schon auf diversen Seiten gelesen, das die g++ Syntax anders ist und habe schon mit % $ asm("mov %edx,portid"); usw. herumgebastelt, ich komme aber irgendwie auf keinen grünen zweig.
Wär schön wenn mir jemand das mal beispielhaft an diesem code erklären könnte.
P.S. das Codebeispiel ist für windows und ich arbeite mit MinGW, aber die inline asm Syntax müsste doch bei allen gcc/g++ gleich sein ?


[ Dieser Beitrag wurde von Kaesebroetchen am 26.06.2005 um 14:22 Uhr editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

27.06.2005, 10:01 Uhr

gni
Posts: 1106
Nutzer
Zitat:
Kaesebroetchen:
P.S. das Codebeispiel ist für windows und ich arbeite mit MinGW, aber die inline asm Syntax müsste doch bei allen gcc/g++ gleich sein ?

Die grundlegende Struktur ja. Der Unterschied liegt in den Registern und Constraints. Mehr über "ExtendedASM" findest Du hier klick


Ich würde Dir vorschlagen, entweder komplett ohne ASM auzukommen oder C und Asm zu trennen.

[ - Antworten - Zitieren - Direktlink - ]

27.06.2005, 12:25 Uhr

Kaesebroetchen
Posts: 643
Nutzer
@gni:
Danke für den Link.
Jetzt kann ich das ganze fehlerfrei compilieren.
Leider hängt sich das Programm auf, aber das wird an meinem code liegen.
Was mir noch seltsam vorkommt, ist die Reihenfolge der Argumente in meinem Beispielcode.
Vom Mikrocontroller kenn ich das so:

mov Quellregister,Zielregister

In meinem Code scheint es aber genau anderherum zu sein.
Ist das beim x86 Assembler anders ?

[ - Antworten - Zitieren - Direktlink - ]

28.06.2005, 12:09 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von Kaesebroetchen:
Vom Mikrocontroller kenn ich das so:

mov Quellregister,Zielregister

In meinem Code scheint es aber genau anderherum zu sein.
Ist das beim x86 Assembler anders ?

Du weißt doch, bei x86 ist alles anders/vertauscht. Die byte-Reihenfolge, Quell- und Zielangaben, technologischer Fortschritt und kommerzieller Erfolg...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

28.06.2005, 13:09 Uhr

Kaesebroetchen
Posts: 643
Nutzer

Du weißt doch, bei x86 ist alles anders/vertauscht. Die byte-Reihenfolge, Quell- und Zielangaben, technologischer Fortschritt und kommerzieller Erfolg...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.
[/quote]

:lach: Danke für die Info !
Ich bin jetzt auch dazu übergegangen das mit asm sein zu lassen und über eine DLL auf den ParPort zuzugreifen. Das funktioniert wenigsten zuverlässig.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > g++ inline asm [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.