代码拉取完成,页面将自动刷新
同步操作将从 殊蕤/xv6-course 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
(gdb) si => 0x80105859 <trapret+7>: add $0x8,%esp 31 addl $0x8, %esp # trapno and errcode (gdb) xv-ctx ctx: cs=0x8 eip=0x80105859 ss=0x10 esp=0x8dffffe4 eflags=0x282 (gdb) si => 0x8010585c <trapret+10>: iret 32 iret (gdb) xv-ctx ctx: cs=0x8 eip=0x8010585c ss=0x10 esp=0x8dffffec eflags=0x282 (gdb) si => 0x0: push $0x24 0x00000000 in ?? () (gdb) xv-ctx ctx: cs=0x1b eip=0x0 ss=0x23 esp=0x1000 eflags=0x202 (gdb) si => 0x5: push $0x1c 0x00000005 in ?? () (gdb) => 0xa: push $0x0 0x0000000a in ?? () (gdb) => 0xc: mov $0x7,%eax 0x0000000c in ?? () (gdb) => 0x11: int $0x40 0x00000011 in ?? () (gdb) xv-ctx ctx: cs=0x1b eip=0x11 ss=0x23 esp=0xff4 eflags=0x202 (gdb) si => 0x80105f57 <vector64>: push $0x0 319 pushl $0 (gdb) xv-ctx ctx: cs=0x8 eip=0x80105f57 ss=0x10 esp=0x8dffffec eflags=0x202 (gdb) x/8x 0x8dffffec 0x8dffffec: 0x00000013 0x0000001b 0x00000202 0x00000ff4 0x8dfffffc: 0x00000023 Cannot access memory at address 0x8e000000 (gdb)
在 x86 中,中断处理程序的入口在中断描述符表(IDT)中被定义。这个表有 256 个表项, 每一个都提供了相应的 cs 和 eip
程序进行一个系统调用,它需要调用 int n 指令,这里 n 就是 IDT 的索引
int 0x40
int
指令进行下面一些步骤:
cpus[0].ts.esp0
Before int
ctx: cs=0x1b eip=0x11 ss=0x23 esp=0xff4 eflags=0x202
After int
(gdb) x/i $pc => 0x11: int $0x40 (gdb) si => 0x80105f57 <vector64>: push $0x0 319 pushl $0 (gdb) x/8x $esp 0x8dffffec: 0x00000013 0x0000001b 0x00000202 0x00000ff4 0x8dfffffc: 0x00000023 Cannot access memory at address 0x8e000000 (gdb) xv-ctx ctx: cs=0x8 eip=0x80105f57 ss=0x10 esp=0x8dffffec eflags=0x202 (gdb)
Stack layout
| ?????? | <- esp0(0x8e000000) ss(0x10) from TSS Present on / | ss 0x00000023 | privilege change \ | esp 0x00000ff4 | | eflags 0x00000202 | | cs 0x0000001b | | eip 0x00000013 | <- esp(0x8dffffec) | |
操作系统可以使用 iret
指令来从一个 int
指令中返回
int
指令保存的值
vector64:
pushl $0
pushl $64
jmp alltraps
call trap
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。