作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的自定义内核编写引导加载程序,它(引导加载程序)基于 Linux 内核 v0.1 boot.s
.这是代码:
.set BOOTSEG, 0x7c0
.set LOADSEG, 0x9000
.set SYSSEG, 0x1000
start:
//copy the WHOLE bootloader to new location
movw BOOTSEG, %ax
movw %ax, %ds
xor %si, %si
movw LOADSEG, %ax
movw %ax, %es
xor %di, %di
movw 256, %cx
rep movsw
//jump to new location
cli
movw LOADSEG, %ax
movw %ax, %es
ljmp $LOADSEG, $loaded
loaded:
// ...
movw $0x3, %ax
int $0x10
// ...
WARNING: HLT instrucion with IF=0
,但没有
hlt
我的代码中根本没有说明。跳转后Bochs继续运行,但不能正常工作,例如:
int $0x10
不清除屏幕。
最佳答案
Bochs 说你的 IF(中断标志,允许中断)是 0,所以问题一定出在你的远跳上。你必须确保
loaded
之后的代码标签不包含任何 hlt
使用说明 loaded
有正确的偏移量标签(检查您使用的编译器或链接器设置)LOADSEG
更改为至
0x8
,实际上是什么将您带到了实模式的 IVT 空间。
关于assembly - 不带 hlt 的 HLT 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18272624/
我正在为我的自定义内核编写引导加载程序,它(引导加载程序)基于 Linux 内核 v0.1 boot.s .这是代码: .set BOOTSEG, 0x7c0 .set LOADSEG,
我在 QEMU 下运行我的保护模式内核,它在尝试执行汇编器 HLT 指令时导致一般保护错误。 EFLAGS 中的 CPL 为 0,IOPL 为 0,启用中断。 这可能是 QEMU 问题还是我遗漏了什么
我将一个简单的 C 程序翻译为 IA32,然后将其音译为 Y86,但出现错误,我不理解或不知道如何调试,因为我刚刚学习 Y86。错误是: Stopped in 1 steps at PC = 0x1.
我尝试在 win8 上执行 asm("hlt"); 但出现了一个 Windows 错误窗口。 有没有办法让 HLT 运行一段时间? 最佳答案 除非您正在编写设备驱动程序,否则您无法调用 HLT。这是一
我正在研究 Intel VMX,并编写了一个 Linux 内核模块来运行 VM。 VM将执行'hlt'指令,并发生VMExit of 12。 但是在VMExit之后,'activity state'是
我是一名优秀的程序员,十分优秀!