【问题标题】:NASM interrupt x86 reference?NASM 中断 x86 参考?
【发布时间】:2011-07-14 12:23:02
【问题描述】:

我似乎找不到 Linux 系统上 NASM x86 中断的良好参考。比如int 0x60是什么,和int 0x80有什么区别?

是否有手册列出所有可与int 指令结合使用的中断号?

【问题讨论】:

  • 怀旧+1...下面是回家的面包屑:-)
  • 0x60 和 0x80 是数字,而 NASM 与它无关——除了将它们从输入复制到输出之外,它对这些数字没有任何作用。
  • 0x80 听起来像是各种 Linux 上的系统调用处理程序。但如前所述,这取决于系统。例如,Windows 上的 int3(单独指令)是调试器的断点。

标签: x86 nasm system-calls x86-16


【解决方案1】:

Linux 仅使用int 0x80(或sysentersyscall),并带有EAX 中的索书号。检查unistd_32.h,看看


对于 16 位 x86,不同组接口的不同中断号由来已久,通常只有 AH 中的调用号。

这里是拉尔夫布朗家……已经好多年了……

与其在沙漠中寻找一粒沙子,不如向维基问路:

BIOS

操作系统

【讨论】:

  • +1 - 压倒性的......但似乎信息就在那里......某处。
  • @Leguri 信息太多? :-) 你要求的 :-) :-) 除非你需要特定的东西,否则 BIOS 和 DOS 类别应该有你需要的一切。
  • 确实我做到了 :) 除非出现更多... 我们应该说... 简洁的答案弹出,勾号是你的。
  • @LeguRi 祝你的真实模式 DOS 好运 :-)
  • 这个问题是关于 Linux 的,但是这个公认的答案甚至没有提到它>.
【解决方案2】:

您可以使用 1 到 255 之间的任何数字。这些是 software generated interrupts

但它的含义/行为在很大程度上取决于您运行它的操作系统!或者更准确地说,在 IDT 中将处理该中断的已注册例程上。

【讨论】:

  • 中断 0 也可以使用。 CPU 也使用中断 0 到 31 来处理故障,但在这方面 0 与 1 没有什么不同。
  • 请注意,在保护模式下,int 0 与实际触发#DE 异常不同,例如通过div edx。 IDT 条目可能不允许用户空间调用带有int 的异常处理程序,尤其是#PF,只允许“有机地”触发故障的条目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-09-20
  • 2011-09-18
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多