大佬教程收集整理的这篇文章主要介绍了DOS标头中的e_cblp和e_cp是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
USHORT e_cblp; // Bytes on last page of file USHORT e_cp; // Pages in file
在大多数可执行文件的二进制代码中,这些值分别为90h和03h.一个页面是512字节的代码,所以有3个页面,但在哪里?我在哪里可以找到它们?如何在512字节的最后一页中识别这些90h(144)字节?
此信息仅由DOS请求.将在DOS中运行的PE文件的唯一代码是DOS存根,它不是3页代码而只是64字节.那么,90h和03h必须做什么?我不能只说e_cblp = 01h和e_cp = DOS标头DOS存根?
我不知道为什么Microsoft链接器(和GNU链接器,但不是Borland或Watcom)使用的默认DOS存根说它的大小为1168字节,实际上要小得多.如果在使用Microsoft的链接器时提供自己的存根,则它使用提供的可执行文件的大小.在加载PECOFF可执行文件时,Windows似乎忽略了此值,并且默认的DOS存根对额外数据没有任何用处.
请注意,可以使用Microsoft的链接器创建长度仅为1024字节的有效PECOFF可执行文件.这要求可执行文件只有一个部分,并且大小小于512字节.虽然Windows将加载并运行可执行文件,但MS-DOS将拒绝,因为文件大小小于MZ标头中给出的1168大小值.
以上是大佬教程为你收集整理的DOS标头中的e_cblp和e_cp是什么?全部内容,希望文章能够帮你解决DOS标头中的e_cblp和e_cp是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。