我在网上搜索但是我找不到int和调用asm之间的任何区别。 什么是call和int asm指令之间的区别?
他们都叫一些功能 " INT"调用系统功能 "调用"调用用户函数。
但在实际模式下他们一样吗? 我无法理解其中的差异。
并且,int调用了在bios上定义的ivt(中断向量表)吗? 但是电话也可以做同样的操作吗?为什么需要打电话或分开?
答案 0 :(得分:4)
表面上看,区别在于:
CALL获取过程地址,该地址可以是near或far,并且可以作为常量或寄存器提供。同时,INT取一个中断号,在0000:0000(实模式)中用作中断向量表中的索引,以查找地址。 CALL将返回地址(近或远)推送到堆栈; INT按下标志寄存器和返回地址(总是很远)。
在保护模式下,INT非常不同。它涉及用户到内核模式切换。
INT用于使用BIOS和DOS服务。 CALL用于调用您自己的程序。你可以在你的一个程序中创建一个中断向量点,但那又有什么意义呢?
答案 1 :(得分:1)
我在网上搜索但是我找不到int和调用asm之间的任何区别。什么是call和int asm指令之间的区别?
全面的答案将是非常长的,简短的基于意见的答案是不够的。所以我只回答
我在网上搜索但我找不到任何...
在您的网络搜索中,您更喜欢可信和专业的信息来源,并且您会找到您所追求的内容。
我建议从Wikipedia: INT (x86 instruction)开始,阅读也链接和"另请参阅"文章(肯定是Wikipedia: Interrupt descriptor table和Wikipedia: System call,其他关键术语可能是call gate
和interrupt gate
...),并熟悉外部参考文献。
最重要的参考文献是Intel® 64 and IA-32 Architectures Software Developer Manuals,其中第6章→程序调用,中断和例外应该回答您想要知道的所有内容