我对使用Linux上的系统调用进行汇编(非常)有基本的了解(我使用GNU汇编程序as).在Windows 7上,我使用GCC编译器套件的MinGW(32位)端口来生成汇编程序.在Linux上我经常使用C库在我的汇编程序中进行一些操作系统交互,在我的Windows平台上,使用MinGW也可以很好地工作.但是,有时我想使用低级系统调用 - 主要是为了使我的可执行文件尽可能小.在Linux上我知道如何做到这一点:
movl $0, %ebx
movl $1, %eax
int $0x80 ; exit with code 0
Run Code Online (Sandbox Code Playgroud)
我还使用这些系统调用来读取/写入终端的字符(例如,在EAX中编写带有4的系统调用).我想知道如何在Windows NT平台上执行此操作.可能吗?我查看了这个表,但我真的不明白系统调用的名称.欢迎任何帮助.
Dai*_*Dai 10
这Nt*组函数没有记录,原因很简单:它是Windows的内部版本,也是版本之间的变化,这意味着直接针对它的程序在Windows版本之间存在高风险.
实际上,针对公共的,记录的功能并没有那么大的开销,并且如果您正确使用API ,您可以获得Microsoft保证您的程序可以与未来版本的Windows一起使用.
因此,我不会为您提供您想要的答案.我强烈建议您使用公共控制台API:http://msdn.microsoft.com/en-us/library/windows/desktop/ms682073%28v=vs.85%29.aspx
看来我的答案很有争议(14票,9票)!截至2017年3月下旬,这个答案有4个赞成票,但有6个赞成票.我会捍卫自己的立场,说OP没有说清楚这是为了实验还是有趣,实际上他写道:
但是,有时我想使用低级系统调用 - 主要是为了使我的可执行文件尽可能小.
...我发现这种推理方式存在问题,我不想充当这些开发实践的推动者,特别是因为使用系统调用来实现控制台任务没有实际好处.我没有直接回答这个问题是不是真的是正确的,而我对"串联SQL"问题的回答也没有给OP他们想要的东西,但是告诉他们使用参数化并且相当强烈地投票?
如果有人想知道如何在Windows中使用低级系统调用,那么请发布一个新问题,适当的框架,我很乐意回答它.
| 归档时间: |
|
| 查看次数: |
12433 次 |
| 最近记录: |