test-i386-vm86.s
来自「xen虚拟机源代码安装包」· S 代码 · 共 104 行
S
104 行
.code16 .globl vm86_code_start .globl vm86_code_end#define GET_OFFSET(x) ((x) - vm86_code_start + 0x100)vm86_code_start: movw $GET_OFFSET(hello_world), %dx movb $0x09, %ah int $0x21 /* prepare int 0x90 vector */ xorw %ax, %ax movw %ax, %es es movw $GET_OFFSET(int90_test), 0x90 * 4 es movw %cs, 0x90 * 4 + 2 /* launch int 0x90 */ int $0x90 /* test IF support */ movw $GET_OFFSET(IF_msg), %dx movb $0x09, %ah int $0x21 pushf popw %dx movb $0xff, %ah int $0x21 cli pushf popw %dx movb $0xff, %ah int $0x21 sti pushfl popl %edx movb $0xff, %ah int $0x21 #if 0 movw $GET_OFFSET(IF_msg1), %dx movb $0x09, %ah int $0x21 pushf movw %sp, %bx andw $~0x200, (%bx) popf#else cli#endif pushf popw %dx movb $0xff, %ah int $0x21 pushfl movw %sp, %bx orw $0x200, (%bx) popfl pushfl popl %edx movb $0xff, %ah int $0x21 movb $0x00, %ah int $0x21int90_test: pushf pop %dx movb $0xff, %ah int $0x21 movw %sp, %bx movw 4(%bx), %dx movb $0xff, %ah int $0x21 movw $GET_OFFSET(int90_msg), %dx movb $0x09, %ah int $0x21 iret int90_msg: .string "INT90 started\n$" hello_world: .string "Hello VM86 world\n$"IF_msg: .string "VM86 IF test\n$"IF_msg1: .string "If you see a diff here, your Linux kernel is buggy, please update to 2.4.20 kernel\n$"vm86_code_end:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?