我知道可执行文件包含指令,但这些指令究竟是什么?如果我想调用 MessageBox API函数,那么指令是什么样的?

感谢。

有帮助吗?

解决方案

可执行文件是操作系统可以理解的二进制文件。可执行文件将包含其中包含数据的部分。 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")
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top