问题描述
对于类似的东西
int $0x80
我知道它正在对目标操作数值int
或0x80
执行128
指令。而且,如果我理解正确,128
是系统调用,它将执行存储在eax
中的调用。但是,vector
在这里是什么意思?
目标操作数指定从0到255的向量,编码为8位无符号中间值。
为什么不在这里使用单词number
?这里的vector有特定的含义吗(我想它与C ++或数学中的含义不同)。
解决方法
在这种类型的低级软件上下文中,术语“向量”是地址,向量的列表。通常基于中断/异常。因此,中断5的处理程序是第5个处理程序(有时第6个中断是从0或1开始的(通常不特定于x86))。
所以int 0x80本身不是向量,但是有向量表,并且该表中的偏移量0x80是该中断的处理程序地址。这样可以在易于查找的表中提供固定大小的项目,但是处理程序的大小可以不同。
调用此中断128不会是不正确的,但是处理程序是基于向量表的。地址是另一个字。