Ich Stimme Jeez und Rolus in Fragen der Befehle vollstaendig zu.
Zudem wuerde ich vorschlagen, dass es die Shift-Operationen sowohl in der klassischen als auch in einer 2 Registervariante geben sollte. In dieser Variante gehen die herausgeschobenen Bits nicht verloren, sondern werden vom zweiten Register als Least Significant Bits aufgedangen. Ein Beispiel (in 8bit):
Das koennte fuer schnelle Division mit Rest und fuer Kryptographie gut eingesetzt werden.
Was Jeez einspruch bezueglich der Registeranzahl angeht, denke ich, dass gerade Compiler davon profitieren koennten. Lokale Variablen in Funktionen koennten dann naemlich in den haeufigsten Faellen durch Register ersetzt werden. Gut, fuer unseren Fall waere das ganze praktisch unerheblich, da unsere "Register" auch im Ram liegen und somit praktisch gleichschnell sind. Fuer eine vermeintliche hypotetische reale Recheneinheit waere das allerdings ein grosser Vorteil.
@Jeez, was genau meinst du mit Branching ? Einfach die normalen bedingten Spruenge ? Ich kenne die bisher unter den Symbolen JZ (Jump if Zero), JNZ (Jump if not zero) usw .. also das Aequivalent zu dem, was du aufgefuehrt hast. Liege ich da richtig, oder meinst du mit Branching Prozessverzweigung wie mit dem Fork Befehl unter C ? Auch verstehe ich deinen Einwand mit den Unmengen an Load und Store befehlen nicht ganz. Koenntest du das bitte genauer ausfuehren ? Meinst du vielleicht, weil dann 1024 byte = 1KB nicht mehr in eine gerade Anzahl an Registern passen ? Immerhin koennten wir unser KB mit 1056 byte = 11 Word oder vielleicht zweckmaessiger mit 1KB = 960 byte = 10 Word definieren ... Im Grunde sind das doch auch nur willkuerlich definierte Werte