繁体   English   中英

[BITS 16]和[ORG 0x0000]指令的顺序

[英]Order of the [BITS 16] and [ORG 0x0000] directives

我正在开始编写内核的一些实验,并乐于做到这一点。 我完成了基本的boot-loader和以下指令:

[BITS 16]
[ORG 0x0000]

但是,在内核教程中,它以:

[ORG 0x0000]
[BITS 16]

我想知道这些指令的顺序是否有所不同? 我正在使用NASM版本2.06rc2,OpenSUSE 11.2

最新的NASM版本为2.08,并根据BITS指令的文档进行判断。

顺序不应该有所不同,因为它们告诉NASM生成具有某些条件的文件,例如使用16位和寻址从零开始。 从它,NASM似乎足够聪明,知道它将产生什么样的输出。

首先出现哪个并不重要,但我通常在我的程序中遵循以下顺序:

        cpu 8086
        bits 16
        org 256

(因为第bits 16是NASM的bin输出格式的默认值,所以我通常不会明确指定它,除非文件中有bits 32部分。)

顺便说一句,带括号的表单是这些指令的低级非“用户”形式。 https://www.nasm.us/xdoc/2.14.02/html/nasmdoc6.html#section-6.1

BITS指令具有完全等效的原始形式,[BITS 16],[BITS 32]和[BITS 64]。 用户级表单是一个宏,除了调用原始表单之外没有其他功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM