如何在程序集级别上进行Windows API调用?

Max*_*man -2 assembly winapi

我写了一些高级解释器和一个简单的字节码编译器和解释器,我想开始为我的小型操作系统制作一个强大的中间语言.

它有自己的API就像windows一样,唯一阻止我启动这个项目的是知道这些特定的API调用(例如win32形式api)是如何在程序集级别上进行的.

有没有办法看到例如未优化的c代码的汇编输出,看看调用是如何变得非常简单?或WWW上的任何来源?

提前致谢

Pet*_*des 5

拥有API的C文档,并且知道调用约定/ ABI,应该足以创建使用它的asm.不需要"魔法"(没有内联syscall指令或类似的东西).


大多数Win32 API都是在用户空间DLL中实现的,因此API调用与其他库函数调用没有什么不同.(即,如果我没记错的话,带有函数指针的间接CALL).

库函数实现通常涉及syscall到与内核交互(或者对于32位代码,可能是int或者sysenter,我不确定),但是这个接口没有记录,并且在不同的Windows版本中不稳定.

  • 大多数接口都是非正式记录的,但有些接口来自Windows DDK等.在XP之前,系统调用通常是通过`int`,从XP开始,通过`sysenter`,通过`syscall使用x64版本的Windows `. (3认同)