繁体   English   中英

在x86汇编程序中查找代码段的偏移量

[英]Finding offset for code segment in x86 assembly program

我是x86汇编编程的新手,在我的一项工作中遇到了这个问题。 我的目的是为某些中断(例如INT 32或INT 35,它们都是用户定义的中断)编写中断描述符表条目。 我查看了《英特尔x86开发人员手册》,发现IDT条目的结构。 出于这个问题的目的,让我们考虑我的程序具有以下结构:

myCodeGeneratingInterrutpt35:
  ...
  ...
  ...

someOtherCode:
  ..
  ..
  ..

myInterruptHandlerForInterrupt35:
  .
  .
  .
  IRET

someOtherInterruptHandlers:
 ... ..

此代码位于从地址开始的代码段中,例如0xa1000(存储在CS中)。 让IDTR指向某个地址,例如0xe5000。 我有一个8字节的条目,对应于每个从[IDTR]开始的IDT条目。 因此,根据我的计算,INT 35的条目为0xe5118。 (一种)。 你们能给我一种方法找出以“ myInterruptHandlerForInterrupt35:...”开头的代码的地址吗? (b)。 另外,如何找到CS中代码“ myInterruptHandlerForInterrupt35”的偏移量?

如果处于保护模式,则应该了解内核的CS 即使您没有,也必须已经处于内核模式才能修改IDT,因此,假设您只有一个代码段,则当前CS将用作中断处理程序的CS 请注意, CS本身与基地址无关,因为基地址在适用时存储在GDT或LDT中。 因此starting at address 0xa1000 (which is stored in CS)才有意义,如果你的意思是,对于段起始于该地址的选择是在CS

至于偏移量,那当然只是标签的地址。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM