Reihenfolge der [BITS 16] und [ORG 0x0000] Richtlinien
Frage
Ich fange an, einige Experimente in einen Kernel zu schreiben und Spaß dabei haben. Ich habe die Grund Boot-Loader erfolgen und die folgenden Anweisungen:
[BITS 16]
[ORG 0x0000]
In der Kernel-Tutorial, aber es beginnt mit:
[ORG 0x0000]
[BITS 16]
Ich frage mich, ob die Reihenfolge, in der diese Richtlinien gegeben werden einen Unterschied macht? Ich bin mit NASM Version 2.06rc2, OpenSUSE 11.2
Lösung
Die neueste NASM ist in der Version 2.08, und die Beurteilung durch die Dokumentation auf der BITS Richtlinie ..
Die Reihenfolge sollte keinen Unterschied machen, da sie NASM sagen, eine Datei mit bestimmten Bedingungen zu erzeugen, wie 16 Bit verwenden und beginnen bei Null-Adressierung. Von ihm scheint NASM intelligent genug, um zu wissen, um welche Art von Ausgabe wird es erzeugen.
Andere Tipps
Es spielt keine Rolle, die man zuerst kommt, aber ich in der Regel dieser Ordnung in meinen Programmen folgen:
cpu 8086
bits 16
org 256
(Weil bits 16
der Standard für Bin Ausgabeformat des NASM ist ich es in der Regel nicht explizit angeben, es sei denn, es gibt einige bits 32
Teile in einer Datei sind.)
By the way, sind die Formen mit Klammern die untere Ebene, nicht „user“ Formen dieser Richtlinien. https://www.nasm.us/xdoc/ 2.14.02 / html / nasmdoc6.html # section-6.1
Die BITS-Richtlinie hat eine genau äquivalente primitive Form, [BITS 16], [BITS 32] und [BITS 64]. Die Benutzerebene Form ist ein Makro, die keine Funktion hat anders als die primitive Form zu nennen.