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?
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
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.
IO schrieb: > 8-Bit µC nimmt ein Befehl genau 1 Byte Speicher im Flash > RAM. Erster Satz schonmal falsch. 8 Bit ist nicht zwangsläufig die Befehlsgröße.
@ 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).
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.
IO schrieb: > Stimmt es dass 1 Byte befehle schneller ausgeführt werden, als n-Byte? Nö, kann so sein muss aber nicht so sein.
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).
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
:
Bearbeitet durch User
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.