我知道可执行文件包含指令,但这些指令究竟是什么?如果我想打电话给 MessageBox
例如API函数,指令是什么样的?
谢谢。
我知道可执行文件包含指令,但这些指令究竟是什么?如果我想打电话给 MessageBox
例如API函数,指令是什么样的?
谢谢。
可执行文件 是操作系统可以理解的二进制文件。可执行文件将包含其中包含数据的部分。 Windows使用 PE格式。 PE格式有一个部分 机 说明。这些指令只是按顺序排序并由CPU理解的数字。
对MessageBox()的函数调用将是一系列指令
1)具有DLL中的函数的地址。该地址由编译器输入
2)将参数“推”到堆栈上的指令
3)实际的函数调用
4)某种清理(取决于调用约定)。
重要的是要记住EXE文件只是特殊格式的文件。我没有为你拆卸,但你可以尝试编译你的代码,然后在visual studio中打开你的EXE来查看反汇编。
可执行文件 是操作系统可以理解的二进制文件。可执行文件将包含其中包含数据的部分。 Windows使用 PE格式。 PE格式有一个部分 机 说明。这些指令只是按顺序排序并由CPU理解的数字。
对MessageBox()的函数调用将是一系列指令
1)具有DLL中的函数的地址。该地址由编译器输入
2)将参数“推”到堆栈上的指令
3)实际的函数调用
4)某种清理(取决于调用约定)。
重要的是要记住EXE文件只是特殊格式的文件。我没有为你拆卸,但你可以尝试编译你的代码,然后在visual studio中打开你的EXE来查看反汇编。
如果我看过一个,这是一个臃肿的问题。 但是,我会尽力概述。 在二进制可执行文件中有一些称为“字节代码”的东西,字节代码只是指令的十六进制代表。通常,您可以“查找”字节代码并将其转换为汇编指令。例如: 说明:
mov ax, 2h
有字节码表示:
B8 02 00
字节代码被加载到RAM中并由处理器执行,因为它是“语言”。没有人理解我用字节代码知道程序,复杂的方式就是狡猾的。装配很有趣......原样。每当您使用更高级别的语言编译程序时,它必须将您的代码转换为汇编指令,您只需想象编译后代码会看起来多么糟糕。不要误会我的意思,编译器很棒,但是用IDA Pro免费软件拆解C ++程序,你会看到我在说什么。 简而言之,这是可执行文件,肯定有关于这个主题的书籍。 我不是Windows API专家,但是其他人可以向您展示调用Windows API“MessageBox”的说明。它应该只是几行大会。
无论编写什么代码(无论是用C还是其他语言编写)都是由编译器编译成一种特殊的语言,称为汇编(好吧,机器码,但它们非常接近)。汇编是一种非常低级的语言,CPU本机执行。通常,您不会在汇编中编程,因为它是如此低级别(例如,您不希望处理从内存中来回拉取位)。
我不能说了 MessageBox
具体的功能,但我猜它是一个 LOT 说明。想一想:它必须绘制框,然后设置样式,然后计算机将其设置为样式,并连接一个偶数处理程序,以便在用户单击按钮时发生某些事情,告诉Windows(或任何操作系统)将其添加到任务栏(或停靠等),还有很多其他的东西。
这取决于你正在使用的语言。但对于许多人来说,它就像......
msgbox("Your message goes here")
要么
alert("Your message goes here")