1 设置 cs ,es, ss ,ds 寄存器初始化为0,因为采用的是平坦模型
2 cs 寄存器, 无法直接 mov 的方式设置为0
3 jmp $0, offset, 这种模式就相当于 jmp cs:ip 方式。
4 设置栈空间,esp 到栈顶。
_start:
jmp $0, $offset // 用于设置cs寄存器, cs:ip 不支持这种语法
offset:
mov $0, %ax
mov %ax, %ds
mov %ax, %ss
mov %ax, %es
mov %ax, %gs
mov %ax, %fs
mov $offset, %esp // 设置了栈顶指针
jmp .
.org 0x1fe //从510的地方开始
.byte 0x55, 0xaa
结果: 调试报错
但是按 F11 却可以继续执行下去
发现: 在.c文件中可以 打断点,但是在 .S 文件中无法打断点。
暂时 先这样吧。