我已经编写了一些高级解释器和一个简单的字节码编译器和解释器,我想开始为我的小型操作系统制作一个强大的中间语言。
它有自己的API就像windows一样,唯一阻止我启动这个项目的是知道这些特定的API调用(例如win32形式api)是如何在程序集级别上进行的。
有没有办法看到未优化的c代码的汇编输出,例如看看调用是如何变得非常简单?或WWW上的任何来源?
提前致谢
答案 0 :(得分:5)
拥有API的C文档,并且知道调用约定/ ABI,应该足以创建使用它的asm。不需要“魔法”(没有内联syscall
指令或类似的东西)。
许多Win32 API都是在用户空间DLL中实现的,因此API调用与其他库函数调用没有区别。 (例如,如果我没记错的话,带有函数指针的间接CALL。)
库函数实现通常会涉及syscall
与内核交互(或者对于32位代码,可能是int
或sysenter
,我不确定),但是这个界面没有记录,并且在不同的Windows版本中不稳定。