从NASM调用Linux中断5

从NASM调用Linux中断5,linux,exception,x86-64,nasm,Linux,Exception,X86 64,Nasm,我正在用汇编语言编写一个小实用程序。如果其中一个参数超出范围,我将尝试抛出异常。绑定指令在64位模式下似乎不可用。调用此中断的正确方法是什么?您应该查看“英特尔手册”,查看哪条指令会抛出int 5,以及在哪种情况下抛出int 5。这实际上不是nasm的东西,也不是linux内核的东西(所以你的标记是不正确的),我猜这是关于x86-64的,添加了相关的标记。如果不是这样,请随意更改。请注意,int 5可能不起作用,原因与int 0不能作为div溢出或零溢出的替代方案相同。-说明来自用户空间的int

我正在用汇编语言编写一个小实用程序。如果其中一个参数超出范围,我将尝试抛出异常。绑定指令在64位模式下似乎不可用。调用此中断的正确方法是什么?

您应该查看“英特尔手册”,查看哪条指令会抛出int 5,以及在哪种情况下抛出int 5。这实际上不是nasm的东西,也不是linux内核的东西(所以你的标记是不正确的),我猜这是关于x86-64的,添加了相关的标记。如果不是这样,请随意更改。请注意,
int 5
可能不起作用,原因与
int 0
不能作为
div
溢出或零溢出的替代方案相同。-说明来自用户空间的
int 0
未能通过陷阱门的权限检查,导致GPF而不是实际的int 0。此外,
int
可能会在内核堆栈上推送与真正的
div
异常稍有不同的内容,因此内核需要阻止人们到达期望以不同方式返回的处理程序。很抱歉,错误标记。已经很晚了,很难保留细节。最终目标是确保两个参数(与数组相关)在一定范围内。错误的特殊性可以通过标准输出处理。我会查邮件的。感谢您应该查看英特尔手册,以检查哪条指令将抛出int 5,以及在何种情况下抛出int 5。这实际上不是nasm的东西,也不是linux内核的东西(所以你的标记是不正确的),我猜这是关于x86-64的,添加了相关的标记。如果不是这样,请随意更改。请注意,
int 5
可能不起作用,原因与
int 0
不能作为
div
溢出或零溢出的替代方案相同。-说明来自用户空间的
int 0
未能通过陷阱门的权限检查,导致GPF而不是实际的int 0。此外,
int
可能会在内核堆栈上推送与真正的
div
异常稍有不同的内容,因此内核需要阻止人们到达期望以不同方式返回的处理程序。很抱歉,错误标记。已经很晚了,很难保留细节。最终目标是确保两个参数(与数组相关)在一定范围内。错误的特殊性可以通过标准输出处理。我会查邮件的。谢谢