gpt4 book ai didi

assembly - x86 汇编代码的语法

转载 作者:行者123 更新时间:2023-12-02 06:57:37 30 4
gpt4 key购买 nike

我试图了解操作系统的基础知识,并在 OCW 中找到了一门关于它的类(class)(名为 6.828)。我在类(class)的实验中找到了引导加载程序的代码,我尝试了但没有理解以下部分代码:

# Enable A20:

# For backwards compatibility with the earliest PCs, physical

# address line 20 is tied low, so that addresses higher than

# 1MB wrap around to zero by default. This code undoes this.

seta20.1:
inb $0x64,%al # Wait for not busy
testb $0x2,%al
jnz seta20.1

movb $0xd1,%al # 0xd1 -> port 0x64
outb %al,$0x64

seta20.2:
inb $0x64,%al # Wait for not busy
testb $0x2,%al
jnz seta20.2

movb $0xdf,%al # 0xdf -> port 0x60
outb %al,$0x60

我们如何检查端口 0x64 是否繁忙以及为什么该端口用于启用 A20 位?进一步使芯片运行到GDT的32位模式配置如下:

# Switch from real to protected mode, using a bootstrap GDT

# and segment translation that makes virtual addresses

# identical to their physical addresses, so that the

# effective memory map does not change during the switch.

lgdt gdtdesc
# Bootstrap GDT
.p2align 2 # force 4 byte alignment
gdt:
SEG_NULL # null seg
SEG(STA_X|STA_R, 0x0, 0xffffffff) # code seg
SEG(STA_W, 0x0, 0xffffffff) # data seg

gdtdesc:
.word 0x17 # sizeof(gdt) - 1
.long gdt # address gdt

上面的代码是做什么的?以“.”开头的行是什么意思?此外,汇编代码似乎有两种格式 .S 和 .asm 两者之间有什么区别?

最佳答案

How are we checking if the port 0x64 is busy or not?

它就在那里。如果设置了 bit #1(值 2),则端口繁忙。

why this port is used for enabling the A20 bit

历史原因。将此功能连接到键盘 Controller 很容易。就像 cpu 复位线一样。

What does the above code do?

使用三个描述符设置 GDT:nullcodedata。我不会在这里解释 GDT 是什么以及保护模式分段是如何工作的。我希望它包含在教程中,否则请咨询 osdev.org .

What is the meaning of lines starting with "."?

那些是汇编程序的指令,它们指示它做事。例如 .word 指示它发出具有给定值的单词。有关详细信息,请参阅汇编程序手册。

there appear to be two formats for the assembly code .S and .asm

汇编文件有 2 个(或更确切地说是 3 个,将 .s.S 算作单独的)公共(public)扩展名。 .s 版本通常用于 gnu 工具链,而 .asm 用于其他工具链。有两种以上的格式,每个汇编器几乎一种。这些只是文件的常用扩展名,它们并没有真正定义内容。

PS:看起来你是汇编的初学者,这很好,但在你积累了一些经验之前,也许你不应该立即开始使用低级操作系统的东西。

关于assembly - x86 汇编代码的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242830/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com