Assembly masm x64中的CreateWindowEx
我正在使用x64 masm在windows10下的汇编中编写代码,我真的很喜欢它!已经25年没碰过装配了——大学时代。目前正在学习和做一些基本的事情,并且相当快地掌握了速度 我想有一个GUI前端,像一个窗口,并在轨道下有一个菜单和子窗口 实现这一目标的两种传统方法(我想)是:Assembly masm x64中的CreateWindowEx,assembly,64-bit,masm,Assembly,64 Bit,Masm,我正在使用x64 masm在windows10下的汇编中编写代码,我真的很喜欢它!已经25年没碰过装配了——大学时代。目前正在学习和做一些基本的事情,并且相当快地掌握了速度 我想有一个GUI前端,像一个窗口,并在轨道下有一个菜单和子窗口 实现这一目标的两种传统方法(我想)是: 在程序集中使用CreateWindowEx和相关的Windows API函数,或 >p>用Visual C++构建前端,然后用MASM代码为程序的其他区域 现在,因为我编程纯粹是为了好玩,而且只想使用汇编语言,所以第
- 在程序集中使用CreateWindowEx和相关的Windows API函数,或
此外,如果您使用良好的编码风格,或者像MASM
INVOKE
这样的高级指令,那么在创建GUI时,C和汇编之间的工作几乎没有差别
答案
我想不出有什么好处,但很有趣。
您可以在与 GUI的创建也可以用C语言完成
从头开始,虽然这是一个非常有趣的练习,但需要花费相当长的时间,因为您必须编写代码来绘制每个控件/小部件以及控制它们的代码。
然而,使用汇编中的DirectX或任何不支持COM的语言将是一件非常讨厌的事情。我曾经在汇编中使用过DirectX,很容易在指向接口的指针中迷失方向,从而获得指向方法的指针。
此外,您需要彻底了解COM的工作原理,并来回查看IDL文件
DialogBoxParam
之类的函数从资源中创建一个对话框。这里不涉及C代码,只涉及一个资源文件4,您可以使用Visual Studio的资源编译器进行编译并链接到可执行文件。任何现代链接器,包括旧的TLINK,都可以链接资源文件
1众所周知的
注册类
,CreateWindowsEx
,GetMessage
,TranslateMessage
,DispatchMessage
,DefWindowProc
API
2 X64调用约定可能比
x86版本
3您主要存储/加载值,有时您需要指针,有时您可以使事情变得更复杂
优雅的函数指针。您永远不需要特定的体系结构说明,这是
除了娱乐之外,使用汇编的主要原因
这是一个简单的文本文件,格式非常简单。你可以用记事本自己编码
如果你在脑海中画出了一个很好的坐标,我就习惯了这样做,以避免使用VisualC++。 < P>我没有在Windows 10中具体做过任何编程,所以这可能有点过时。p>
当您在Windows中构建GUI时,您最终会调用一组众所周知且主要是标准的API 1
按顺序,通常与非常基本的控制流类似于单分支ifs。
当然,这并不适用于所有应用程序,但适用于大多数应用程序
长话短说,在这种情况下,用C或汇编语言编写GUI并没有太大的区别,最重要的是
重要的一点是调用API函数的方式不同2
从操作系统和CPU的角度来看,用
汇编语言和用任何其他语言编写的程序,编译成本机指令。此外,如果您使用良好的编码风格,或者像MASM
INVOKE
这样的高级指令,那么在创建GUI时,C和汇编之间的工作几乎没有差别
答案
我想不出有什么好处,但很有趣。
您可以在与 GUI的创建也可以用C语言完成
从零开始做这件事,虽然是一项非常有趣的运动,但不会