- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
DOS 可执行文件的前 2 个字节是 0x4d 和 0x5a。如果这些被执行,0x4d 意味着 'dec ebp' 和 0x5a 是 'pop edx'。
'dec ebp' 将基址指针减 1,'pop edx' 将 esp 的值增加 4(x86 汇编)。我的问题是这些操作不会使堆栈处于不一致状态吗?而且由于命令行参数(如果有的话)是相对于 ebp 存储的,这些操作不会使命令行参数无法访问吗?
我可能遗漏了一些明显的东西,如果是这样请幽默我...
最佳答案
与 COM 类型的可执行文件不同 - COM 类型的可执行文件从程序镜像的第一个字节开始执行 - EXE 类型的可执行文件不应该以可执行代码开头。在 EXE 文件的开头有一个头 block ,其中包含实际程序入口点的地址等。
因此字节“MZ”(或者 - 假设同样有效 - “ZM”)不代表指令。它们只是用于识别格式的标记。
维基百科文章 DOS MZ executable 中有一个很好的概述.
注意:可执行文件的 DOS 部分是隐含的 16 位实模式,应该这样反汇编,而不是 32 位代码。
关于assembly - DOS 可执行文件中的 "MZ" header 及其对堆栈的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59354139/
感谢阅读 StackOverflow 上的错误处理,我发现了 Mz-Tools。但是,我想知道是否有办法同时更新 MZ-Tools 添加的所有错误处理程序。 如果我使用 MZ-Tools 添加错误处理
我有以下代码可以使用我的 android 2.3.7 在我的 zebra mz 220 中打印: public class Printing extends Activity { ProgressDi
DOS 可执行文件的前 2 个字节是 0x4d 和 0x5a。如果这些被执行,0x4d 意味着 'dec ebp' 和 0x5a 是 'pop edx'。 'dec ebp' 将基址指针减 1,'po
DOS 可执行文件的前 2 个字节是 0x4d 和 0x5a。如果这些被执行,0x4d 意味着 'dec ebp' 和 0x5a 是 'pop edx'。 'dec ebp' 将基址指针减 1,'po
我想从二进制(“.exe”)文件中获取 Unicode 字符串。 当我使用这样的代码时: `unicode_str = re.compile( u'[\u0020-\u007e]{1,}',r
我将 Times New Roman 字体下载到我的 Zebra 打印机,当我单击“示例打印输出”(抱歉翻译不当)时,它打印出波兰语字母,但是当我使用 CPCL 命令时,它不起作用。 我的代码示例:
我的印象是什么 VERSIONINFO 资源是纯粹的 Windows 发明,但是在阅读 documentation 时,我偶然发现了 VERSIONINFO 资源定义语句的 fileos 参数的 VO
我正在尝试学习如何使用程序集 (NASM) 创建 Dos .EXE 文件,手动构建 header 并将文件汇编为二进制文件。我的页面选项有问题(页面总数和最后一页的字节数)。无论我将初始值设置得有多小
我想知道确定 EXE 文件的 MZ 部分结束位置以及附加的扩展可执行文件开始位置(可以是 PE/LE/LX/NE/COFF 等...)的最佳方法是什么。 我找到了这个网站:http://www.del
我有一个库,我已经使用 swig 为它生成了 tcl 绑定(bind)。这样生成的dll是xyz_tcl.dll,如果我原来的lib dll是xyz.dll的话。但是当我尝试加载 dll 时,它说“无
我是一名优秀的程序员,十分优秀!