Sagen wir so, der Einwand war nur logisch.
Hast Du Dir das AVR Instruction Set Datenblatt von Atmel geholt ? Dort findest Du alle verfügbaren Befehle....falls es diese Möglichkeit gegeben hätte...
Sagen wir so, der Einwand war nur logisch.
Hast Du Dir das AVR Instruction Set Datenblatt von Atmel geholt ? Dort findest Du alle verfügbaren Befehle....falls es diese Möglichkeit gegeben hätte...
Hallo,
ja, ich habe doc0856 (ich denke das meinst Du). Da die Befehle da alphabetisch und nicht sachlich angeordent sind, war ich mir zunächst nicht ganz sicher, ob ich nicht was übersehen habe...
Aber es scheint ja auch eine prinzipielle Sache zu sein, dass beim AVR nahezu alles über die Register läuft. Mit "naiven Verständnis" könnte man ja schon auf die Idee kommen, dass es eigentlich möglich sein sollte, mit einer Instruktion direkt von einer Speicherstelle in eine andere (die nicht Register ist) zu schreiben.
Aber ich gebe Dir ja Recht, +/- zwei ASM-Befehle ist eher sportlicher Ehrgeiz, als ein praktisches Problem (wobei dieser "Ehrgeiz" für mich ja ein bißchen die Faszination an ASM ausmacht...)
Gruß
Malte
Das meinte ich.
Im Controller Datenblatt findest Du üblicherweise am Schluss die für den entsprechenden Controller verfügbaren Opcodes, dort unter DATA TRANSFER INSTRUCTIONS nachsehen.Da die Befehle da alphabetisch und nicht sachlich angeordent sind, war ich mir zunächst nicht ganz sicher, ob ich nicht was übersehen habe...
Alles was Atmel in Silizium ätzen möchte ist möglich, auch z.B. ein LISTS Opcode....mit einer Instruktion direkt von einer Speicherstelle in eine andere (die nicht Register ist) zu schreiben.
Andererseits steht ja im Datenblatt gleich zu Anfang: Advanced RISC Architecture, was expandiert zu Reduced Instruction Set Computer wird.
Ziel eines reduzierten Befehlssatzes ist es eben nicht, für alle möglichen Konstellationen einen Befehl bereit zu halten, sondern dem Programmierer die Möglichkeit zu geben, aus möglichst wenigen Befehlen sich das Benötigte zusammenzustricken.
Im Gegenzug dazu wird ein Großteil der Befehle die innerhalb der Prozessorregister arbeiten, in nur einem Zyklus ausgeführt, während Speicherzugriffe meist 2+ Takte benötigen, man kann also durch Halten der Zwischenergebnisse in den Prozessorregistern die Ausführungsgeschwindigkeit beeinflussen.
Aus diesem Grund wollte ich Deinen Code sehen, um beurteilen zu können wie weit Du mit diesem Ehrgeiz schon gekommen bist...ist eher sportlicher Ehrgeiz, als ein praktisches Problem (wobei dieser "Ehrgeiz" für mich ja ein bißchen die Faszination an ASM ausmacht...![]()
Ich will's erstmal selbst in Ruhe durchdenken und zu Ende bringen. Dann kann ich den Code hier ggf posten. Auf jeden Fall vielen Dank für das Angebot, den Code anzugucken!Aus diesem Grund wollte ich Deinen Code sehen, um beurteilen zu können wie weit Du mit diesem Ehrgeiz schon gekommen bist![]()
Gruß
Malte
Lesezeichen