mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fragen zu AVR Assembler und den AVR Opcodes


Autor: Kaj G. (Firma: RUB) (bloody)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht 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):
1011  |  1AAr  |  rrrr  |  AAAA
Was soll mir jetzt aber das "1AAr" sagen?

Grüße

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, ich glabu ich habs gerade verstanden.
Da r zwischen 0 und 31 liegen muss, wird das fünfte Bit mit in dem 
Besagten Nibbel gespeichert, gleiches gilt für A (0 bis 63). Ist diese 
Annahme richtig?

Autor: Stefan K. (stefan64)
Datum:

Bewertung
2 lesenswert
nicht 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

Autor: Dergute Weka (derguteweka)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
Moin,

Kaj G. schrieb:
> Was soll mir jetzt aber das "1AAr" sagen?

Das sagt dir: 1, dann 2bit der Adresse, wo der Out hingeht und dann 1bit 
der Registernummer, die geoutet wird.
Mutmasslich jeweils die MSBs von Adresse und Register.

Gruss
WK

Autor: S. Landolt (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Und wenn es wirklich interessiert, kann man sich ja auch mal das 
.lst-File anschauen.

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
-4 lesenswert
nicht lesenswert
Allerdings ist dieses Wissen von nur sehr beschränktem Nutzen. Es sei 
denn, man möchte einen (weiteren) Assembler für AVR schreiben.

Autor: Kaj G. (Firma: RUB) (bloody)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
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, oder..., oder..., oder...

Autor: Jakob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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... ;-)

Autor: Axel Schwenke (a-za-z0-9)
Datum:

Bewertung
-4 lesenswert
nicht 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?

Autor: S. R. (svenska)
Datum:

Bewertung
3 lesenswert
nicht 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.

Autor: Stefanus F. (stefanus)
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
2 lesenswert
nicht 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

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.