我最近使用Visual Studio在Windows 10下使用masm x64重新进行汇编语言编程。 我写了一个简单的应用程序,它使Windows API调用读取机器的本地日期和时间,将其转换为本地区域设置格式(在控制面板中找到)。最后通过一个对话框输出。
我学到了很多东西(并且还记得一些东西),例如64位体系结构,寄存器,调用约定,阴影/溢出空间,16字节对齐堆栈,Unicode字符串,连接(字符串)变量......
背景 25年前我最后一次使用装配回到了Uni。 这是在MS DOS下使用masm和tasm。因为我的根源,这就是为什么我偏爱masm的原因。
现在是纯粹主义者,我想仍然在Windows 10下编程,但直接访问某些硬件而不使用Windows API调用。 在用户模式下在Windows下进行编程非常简单,这意味着您别无选择,只能使用Windows API。 但是在汇编中进行编程并进行进程外调用(即Win API调用)听起来效率很低!
所以(我猜)Windows下访问硬件的唯一选择是以内核模式(ring 0)编程。 我相信这可以通过Windows 10 WDK实现。不幸地看着WDK似乎是关于C ++的。并且甚至没有提到装配。
由于DirectX和OpenGL已经为您完成了这项工作,因此我现在不会通过在汇编中访问图形卡来实现图形编程。只需简单地使用它们。
问题 鉴于Windows编程没有太多的masm 64信息,但幸运的是英特尔64位架构手册非常棒!
任何人都可以提供信息或指出我正确的方向吗?
我不想尝试任何具体的事情。我喜欢在集会中学习和编程,并从中获得很多乐趣。