Fragen zu AVR Assembler und den AVR Opcodes

OP (Firma: RUB) #4706501
Lesenswert?

Hallo Forum,

ich habe da die ein oder andere Frage zu AVR Assembler und den AVR 
Opcodes.

Nehmen wir als Beispiel den OUT Befehl. Mir ist der Aufbau des Opcodes 
nicht ganz klar. Im AVR Instruction Set Manual ist der Opcode so 
beschrieben (siehe Bild):
1
1011  |  1AAr  |  rrrr  |  AAAA
Was soll mir jetzt aber das "1AAr" sagen?

Grüße
Angehängte Dateien:
#4706504
Lesenswert?

Die "A" sind die Adress-Bits des IO-Space.
Die "r" sind die Register-Adressierbits.

Alle 6 "A" Bits zusammengenommen ergeben eine 6-Bit-Zahl, also 0 -- 63. 
Sie bilden zusammen eine Adresse im IO-Space.

Alle 5 "r" Bits zusammengenommen ergeben eine 5-Bit-Zahl, also 0 -- 31. 
Sie bilden zusammen die Nummer des verwendeten Registers.

Die vordersten 5 Bits 10111 dienen der Befehlsdekodierung.

Viele Grüße, Stefan
Gast #4707800
Lesenswert?

Nun ja, kann ja mal passieren, dass man seinen Quelltext
überschrieben hat - und die neue Variante nicht funktioniert.
Dann ist Reverse Engineering sowieso legal.

Habe es auch schon mal bei Z80-Code gemacht, um einem Hersteller
einen dummen Bug nachzuweisen - das war auch legal, da ich ja
keinen Gewinn aus fremder Leistung ziehen wollte.

Ansonsten ist die Rückübersetzung bei AVR doch kein Problem:
1, oder 0 ist Befehlscode, die Adress-, Offset-, Register-,
..., Konstantenbits etc. sind von außen betrachtet recht frei
dort hineingewürfelt.

Wer sich durch die Nibble-Abgrenzung verwirren lässt, ist
selber Schuld

Bleibt nur noch das kleine Problem, welchen Registern man
(temporär?) welchen Inhalt - und welchen Speicherbereichen man
was zugeordnet hat. War bei Z80 auch nicht leichter... ;-)
#4707864
Lesenswert?

Kaj G. schrieb:
> Axel S. schrieb:
>> Es sei
>> denn, man möchte einen (weiteren) Assembler für AVR schreiben.

> Oder man möchte vielleicht einen (weiteren) Emulator schreiben/andere
> Emulatoren verstehen... Oder man beschäftigt sich mit Embedded-Security
> und Reverse-Engineering

Ja, und? Alles die gleiche Baustelle.

Die AVR-Architektur ist zweifellos nett. Aber sie hat ihren Horizont 
überschritten. Und daß sie jetzt aus dem Haus Microchip kommt, macht sie 
ganz sicher nicht besser oder beliebter. Mithin wird das Bedürfnis nach 
weiteren (!) Assemblern/Emulatoren/$WHATEVER sicher nicht zu- sondern 
eher abnehmen.

Also nochmal: abgesehen von dem Wert von Wissen an sich - welchen 
praktischen Nutzen zieht man heute noch aus dem Bit-für-Bit 
Verständnis des AVR Befehlssatzes?
#4707935
Lesenswert?

Axel S. schrieb:
> Also nochmal: abgesehen von dem Wert von Wissen an sich - welchen
> praktischen Nutzen zieht man heute noch aus dem Bit-für-Bit
> Verständnis des AVR Befehlssatzes?

Muss jedes Wissen sofort praktischen Nutzen haben?

Wenn man verstanden hat, wie Befehle auf dem AVR codiert werden, dann 
versteht man auch, wie es auf so ziemlich allen anderen CPUs gemacht 
wird. Und auf dem AVR ist es deutlich einfacher als z.B. auf ARM oder 
x86.
Gast #4708684
Lesenswert?

> Muss jedes Wissen sofort praktischen Nutzen haben?

Ich hatte mal (in Zeiten vor dem Internet) eine 8051 Assembler selbst 
geschrieben, weil ich keinen Zugang zu einem kostenlosen oder 
kostengünstigen hatte.

Da musst ich mich mit solchen Details auch herum schlagen. War 
lehrreich, ich würde es heute aber nicht mehr so angehen.
#4708687
Lesenswert?

@Axel Schwenke (a-za-z0-9)

>Die AVR-Architektur ist zweifellos nett. Aber sie hat ihren Horizont
>überschritten.

Das hat noch keiner geschafft, nicht mal der AVR. Du meinst eher den 
Zenit ;-)

>Also nochmal: abgesehen von dem Wert von Wissen an sich - welchen
>praktischen Nutzen zieht man heute noch aus dem Bit-für-Bit
>Verständnis des AVR Befehlssatzes?

Frag mal Josef G.!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren