【问题标题】:Meaning of 'vector' in asm contextasm上下文中“向量”的含义
【发布时间】:2020-12-13 14:47:52
【问题描述】:

例如:

int $0x80

我知道它正在对目标操作数值0x80128 执行int 指令。而且,如果我理解正确,128 是一个系统调用,它将执行存储在eax 中的调用。不过这里vector是什么意思呢?

目标操作数指定一个从 0 到 255 的 向量,编码为 8 位无符号中间值。

为什么不在这里使用number这个词呢?这里有向量的特定含义吗(我想它与 C++ 或数学中的含义不同)。

【问题讨论】:

  • 让我为您搜索一下:whatis.techtarget.com/definition/interrupt-vector。或者特别是对于 x86,历史上中断处理程序指针表被称为 IVT en.wikipedia.org/wiki/Interrupt_vector_table。保护模式使用“描述符”表,除了指针之外还有元数据。
  • 至于词源,“向量”是有道理的:它是一个进入的方向,将执行发送到哪里。
  • 来自 Intel 的 Basic Architecture 卷,第 6.4 节向量和中断:“IDT 中的每个中断和异常都用一个数字标识,称为向量”

标签: assembly linux-kernel x86 system-calls terminology


【解决方案1】:

在这种类型的低级软件上下文中,术语向量是地址、向量的列表。通常基于中断/异常。所以中断 5 的处理程序是第 5 个(第 6 个中断有时会以 0 或 1 开头(通常不特定于 x86))。

所以 int 0x80 本身不是向量,但有一个向量表,该表中的偏移量 0x80 是该中断处理程序的地址。这允许在易于查找的表中使用固定大小的项目,但处理程序的大小可能会有所不同。

调用此中断 128 并没有错,但处理程序是基于向量表的。这是地址的另一个词。

【讨论】:

    猜你喜欢
    • 2015-02-11
    • 1970-01-01
    • 2022-12-05
    • 2013-03-05
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    相关资源
    最近更新 更多