Eine grundlegende Frage zu µC

Gast #3431845
Lesenswert?

Ich kenne mich mit µC nich so gut aus.
Ich habe zwar schon ein LED zum Blinken gebracht, ADC ausgelesen und 
UART Kommunikation benutzt. (alles mit PIC).
Was die eigentliche Hardwarearchitektur angeht, kenne ich mich da nicht 
aus.

Nun habe ich folgendes gehört:
Auf einen 8-Bit µC  nimmt ein Befehl  genau 1 Byte  Speicher im Flash 
RAM.
d.h. ein µC mit 1 kByte Flash RAM kann ein Programm aus maximal 1024 
Befehlen enthalten.
Daraus folgt, dass auf einem 32-Bit µC  ist ein Befehl 4 Byte lang. Dies 
bedeutet, dass 1 kByte Flash Speicher  nur Platz für 256 Befehle 
enthält.

Inwieweit ist das alles Richtig?
Gast #3431850
Lesenswert?

ein Befehl besteht nicht nur aus einem Byte. Oft werden in Maschinencode 
auch noch register angegeben, auf die sich der Befehl bezieht.

Wirklich hilfreich hierfür ist das Assembler-Tutorial hier auf der Seite
Gast #3431855
Lesenswert?

IO schrieb:
> Inwieweit ist das alles Richtig?
Leider garnicht :-/

- Flash ist etwas Anderes als RAM.
- Bereits auf deinem PIC könnte es sein, dass der Befehl nicht genau ein 
Byte i.S.v. 'Oktett' einnimmt, weil es PIC mit krummen Befehlslängen 
gibt.
- Bei den AVR beispielsweise nimmt ein Befehl immer zwei Bytes, also ein 
Wort, ein. Einige Befehle belegen sogar ein Doppelwort, also vier Bytes.
#3431864
Lesenswert?

@ IO (Gast)

>Auf einen 8-Bit µC  nimmt ein Befehl  genau 1 Byte  Speicher im Flash
>RAM.

Es gibt kein Flash RAM, nur Flash ROM, siehe Speicher.
Und die Längr der Befehle hat mit der Registerbreite der CPU kaum was zu 
tun.

>d.h. ein µC mit 1 kByte Flash RAM kann ein Programm aus maximal 1024
>Befehlen enthalten.

Nein.
Der AVR hat 16 Bit Befehle, einige wenige sind sogar 32 Bit lang (2 
Worte a 16 Bit).

>Daraus folgt, dass auf einem 32-Bit µC  ist ein Befehl 4 Byte lang.

Nein. Das kommt auf die CPU an. Auch dort ist vieles möglich, sogar 1 
Byte Befehle! Ausserdem gibt es CPUs, wo ALLE Befehle gleich langs sind, 
bei anderen sind sie eher unterschiedlich (Z80 & Co).
Gast #3431871
Lesenswert?

Ja, ich meinte ROM, nicht RAM...

So habe ich auch gedacht, dass verschiedene Befehle verschieden lang 
sind.
Stimmt es dass 1 Byte befehle schneller ausgeführt werden, als n-Byte?



PS.

Die Frage basiert sich auf einem Gespräch zwischen den Studenten.
Gast #3432478
Lesenswert?

Wie lange ein Befehl benötigt und wie viel Speicher der Befehl belegt 
kommt auf den Aufbau des µC und den Befehl an. Eine generelle Aussage 
kann man da nicht treffen, das ist von Hersteller zu Hersteller und auch 
schon z.T. von µC zu µC verscheiden. Auch die Dauer der Ausführung ist 
unterschiedlich.
Beim AVR ist z.B. der ADD und der RET Befehl gleich lang (2Byte) aber 
ADD braucht nur 1 Cycle wärend der RET 4-5 Cycles benötigt (Je nach 
Prozessor).
#3432716
Lesenswert?

Hi
Eigentlich ist die Frage ja beantwortet, aber trotzdem verwirrt mich 
diese Aussage:
>Die Frage basiert sich auf einem Gespräch zwischen den Studenten.
Hier muss ich erst mal tief Luft holen, denn: Wenn die Befehle in einem 
µC nur ein Byte belegen, würde es automatisch den Befehlsumfang auf 256 
verschiedene Befehle eingrenzen. Das mag ja bei einigen speziellen 
Bausteinen auch der Fall sein.. im letzten Jahrtausend vielleicht, aber 
nur mal so als Beispiel:
Befehl: Lade, vergleiche, speichere, addiere ... gut das sind vier, die 
kann man mit 2 Bit auflösen. Aber was? .. und nun weiter
Register mit Register und da Register letztlich auch über Adressen 
erreicht werden, sollte hier spätestens klar sein, wenn 8Bit Befehle, 
dann höchstens 4 verschiedene Arten und höchstens 8 verschiedene Quellen 
und Ziele. (2*3 Bit)
Ein ziemlich lausiger µC. Das sollte jedem Studenten klar sein, auch 
wenn er noch im ersten Semester ist.
Es gab zur Zeit der Z80 die Datenbreite von 8 Bit, und das war ein 
Engpass auch für Befehle. So konnte nur der erste Teil eines Befehls in 
einem Byte aus dem Speicher geladen werden. Die Codierung ließ dann den 
2. 3. oder 4. Teil folgen. Bis alles intern in den Registern verstaut 
und zur Bearbeitung vorlag. Vielleicht haben sich die Studenten darüber 
unterhalten, das ergäbe noch etwas Sinn.
gruß oldmax
#3432728
Lesenswert?

IO schrieb:

> Die Frage basiert sich auf einem Gespräch zwischen den Studenten.

Ich tippe mal auf Bachelors. Wahrscheinlich auch noch FH. Passt.

Die obigen Fragen lassen sich zumindest für eine spezielle Architektur 
schnell beantworten wenn man einen Blick ins Datenblatt eines beliebigen 
Controllers wirft. Vorzugsweise eines einfachen wie AVR oder 8-Bit PIC. 
Da gibt es sogar Tabellen mit allen Befehlen wo sofort klar wird, wie 
lange diese Befehle sind und auch wie sie aufgebaut sind. Da muss man 
nicht wild spekulieren und unsäglich falsche Annahmen treffen.

gruß cyblord

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