Was ist der minimale Befehlssatz erforderlich für alle Montage-Sprache als nützlich angesehen werden?

Ich studiere Montage der Programmierung im Allgemeinen, also habe ich beschlossen zu versuchen und die Implementierung einer "virtuellen Mikroprozessoren" in der software, die hat Register, flags und RAM mit zu arbeiten, umgesetzt mit Variablen und arrays. Aber da möchte ich simulieren nur die grundlegende Verhalten von jedem Mikroprozessor, ich möchte erstellen Sie eine assembly-Sprache, die nur die wesentlichen Anweisungen, nur diejenigen Anweisungen, ohne die Sie nicht sein konnte nützlich. Ich meine, es gibt assembly Sprachen, die das tun, Multiplikation und Swap register, etc, aber diese Vorgänge sind nicht einfach, weil Sie Sie einsetzen können einfachere Anweisungen. Ich will nicht zu implementieren Anweisungen wie diese.

Kann ich mir vorstellen, ein paar Anweisungen, die (glaube ich) muss immer vorhanden sein, in jeder assembly-Sprache, wie MOV zu bewegen bytes um und JP zum senden der instruction-pointer auf eine andere Adresse.

Könnten Sie vorschlagen, eine Reihe von die meisten grundlegenden und wesentlichen Montageanleitung? Danke!

  • siehe stackoverflow.com/q/3711443/309483
  • verwandt, aber nicht doppelt. Ein-instruction-set-Computer könnte leicht zu bauen, aber nicht so viel leichter, dass die schrecklichen Leistung würde sich lohnen, dies in der Praxis. Wenn Sie ausschließen Definitionen von "nützlich" wie "nützlich wie ein Beispiel von Turing-Vollständigkeit" und nur als "nützlich für einige real-Welt mit einem hardware-oder VM-Implementierung", dann wird der Mindest-standard für nützlich, die viel höher als die "Turing-vollständig", wenn es um Assembler. Wenn Ihr problem ist also, domain-spezifischen brauchen Sie nicht Turing-Vollständigkeit, Sie brauchen nicht asm.
  • es ist wahr, Sie haben Recht. Ich aktualisiert meine Antwort zu berücksichtigen.
  • Was ist das absolute minimum Satz von Anweisungen, die erforderlich sind, um zu bauen eine Turing-Prozessor
Schreibe einen Kommentar