Forum: Compiler & IDEs unbekannter Assembler Befehl


von sse (Gast)


Lesenswert?

Hallo

in einem Power PC Projekt im Startup Code befindet sich diese Zeile:
1
  cmpw     r1, r2

Mein Compiler meint dazu:
error: not part of selected instruction set architecture


Kann jemand sagen welche Logik hinter der Zeile steckt? Evtl kann ich es 
abändern und es reicht ein
1
  cmp     r1, r2
was der Compiler akzeptiert.

Nachfolgende Zeile ist
1
  e_blt    init_table

von Engelchen (Gast)


Lesenswert?

cmpw; heißt vielleicht vergleiche WORT und nicht nur Byteweise.

von gast (Gast)


Lesenswert?

cmpw heist Compare Word , blöd nur, dass r1 und r2 jeweils Bytes sind. 
Wenn der compiler täte was Du willst sehe es etwa so aus :

Vergleiche Inhalt von R2R1 mit R3R2 (dann wären es Words), erkennst Du 
die Unsinnigkeit deines Befehls !!!

Weiterhin solltest Du prüfen, ob Wordbefehle nicht nur auf die letzten 
Register anwendbar sind.

Problem liegt zwischen den Ohren und nicht im compiler.

von (prx) A. K. (prx)


Lesenswert?

gast wrote:

> blöd nur, dass r1 und r2 jeweils Bytes sind.

Erst lesen, dann spotten. Wenn das mit dem PowerPC oben kein Witz war, 
dann ist hier kein AVR am Werk und R1 und R2 sind mindestens 32 Bit 
breit.

Könnte allerdings sein, dass die explizite Grössenangabe "cmpd" (64bit) 
und "cmpw" (32bit) nur zulässig ist, wenn ein 64bit Instruction Set 
ausgewählt wurde. Und sonst nur "cmp" geht.

von sse (Gast)


Lesenswert?

>> wenn ein 64bit Instruction Set ausgewählt wurde

wo meinst du stellt man das ein? ist das Teil des Startup Codes?

von (prx) A. K. (prx)


Lesenswert?

Ob der verwendete PowerPC überhaupt 64bit Operationen abkann "stellt" 
der Konstrukteur ein.

In Assemblern egal wofür gibt es üblicherweise irgendwelche Statements 
oder Kommandozeilenparameter, die entweder den Befehlssatz oder direkt 
das betreffende Modell angeben.

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.