2013-10-27 32 views
-3

我试图在C和ASM中的源代码中移植一些ASM指令。 任何人都可以帮助我找到一个指令集并了解ARMv7的使用说明吗? 其实我处理中断,所以我想“翻译”:与ARMv7相同的x86_64指令

iretq 
int $0x80 
int $0x04 

我从来没有在ARMv7的ASM程序员。

谢谢!

+1

询问“这些说明是做什么的”会不会更有成效?然后你会学到一些东西,并且可能能够自己移植代码,而不仅仅是要求别人为你做翻译工作。 – jalf

+0

iretq =从中断返回; int =调用中断,第一个参数是IDT上的中断号。不管怎么说......;) – user1189104

+0

'movs pc,lr'和'svc#0'。我不确定答案是有帮助的。 –

回答

3

对应的英特尔插入分别是iretint。也就是说,中断处理是高度CPU和平台特定的;一对一翻译命令很可能不会产生工作程序。如果你正在开发一个应用程序,你不应该搞乱中断(即使int 80h - 有更好的方法来执行系统调用)。如果您正在开发驱动程序或操作系统内核,您应该系统地学习汇编,而不是逐行翻译。

int命令可能会在应用程序代码理论上存在 - 它调用中断,这是与操作系统交互的异国情调,但合法的方式。另一方面,iret命令只能用于中断处理程序。它从不在kernelspace之外使用。

+0

平台是Android,CPU是ARMv7处理器rev 0(v7l)。我也想知道该配置的指导ASM。如果非常难以处理这些信息,我不会要求翻译。我想学习。问题不是人们认为他们知道什么时候没有,问题是我以前从未使用过ARM;) – user1189104

+3

如果你正在开发一个应用程序,你不应该搞乱中断(甚至是'int 80h' - 有更好的方法来执行系统调用)。如果您正在开发驱动程序或操作系统内核,您应该系统地学习汇编,而不是逐行翻译。 –