Inline-Assembler - Byte, Long bzw. Word in den Speicher schreiben
-
Hallo Leute.
Bin neu in Assembler. Versuche gerade Erfahrungen zu Sammeln.
Habe hier eine Aufgabe, in der man in C programmieren soll und mit Inline-Assembler arbeiten soll.Die zu schreibende Funktion:
void WriteByteToMem(LONG address, BYTE value) { *((BYTE*)(address)) = value; }
Die Funktion soll 8 Bit in den Speicher schreiben an die Adresse address und zwar den Wert value. Das soll mit z.B. _ASMLINE(" move.b ...,..."); geschehen.
Mein erstes Problem ist, dass ich in der Inline-Assembler-Zeile dann nicht die Variablen address und value ansprechen kann...
Wie bring ich Variablen aus C zusammen mit dem Assemblercode?
Wär cool wenn Ihr mir bei der Aufgabe helfen könntet!Danke.
Chris
-
und du bist sicher, dass es sich um 68000er assembler handeln soll?...
-
Ja, es handelt sich um nen 68000er Familienprozessor!
Kennst Du Dich da aus?Greez
Chris
-
Kennst Du Dich da aus?
68k'er-assembler kann ich zwar, aber wie der mit den gegebenheiten deines c-codes zu kombinieren ist, haengt hauptsaechlich von der verwendeten syntax dines c-compilers ab. um welchen compiler handelt es sich denn da genau? und auf was fuer einer maschine arbeitest du damit ueberhaupt?
wenn es sich um einen gcc handelt, kannst du im (etwas kryptischen) at&t-syntax deklarieren, in welchen registern die parameter liegen sollen.
je nach calling-convention kannst du auch davon ausgehen, dass die parameter entweder auf dem stack oder schon in registern liegen...
-
Jo also es handelt sich um n Motorola 68332 Microcontroller. Der is über COM angeschlossen und ich hab hier den Compiler "EDE". Hab Windows XP und Windows 2000 hier.
Sagt Dir das was?
-
Hi
EDE? die Firma heist nicht etwa Mentor Graphic ( bzw ATI )? Die Haben eigentlich keinen eigenen Compiler sondern verwenden / Verkaufen nur die von anderen, und integrieren sie in ihre entwicklungsumgebung.
gruss.
-
Also das Tool heißt TASKING EDE. Nehme das halt weil man damit die 68000er Familie programmieren kann. Wisst Ihr, wie ich nun mit _ASMLINE(...); meine Variablen verwenden kann und den Wert an die Adresse aus der anderen Variable speichern kann?
-
is ja schon ziemlich exotisch - kann mir kaum vorstellen, dass das hier noch jemand nutzt...
du wirst wohl nicht drumherum kommen, die bedienungsanleitung zu lesen oder das forum zu konsultieren.