2. 小程序:文件结构

2. 小程序:文件结构,第1张

文件结构

程序包含一个描述整体程序的 app 和多个描述各自页面的 page。

一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下:

文件必填作用

app.js 是小程序逻辑

app.json 是小程序公共设置

app.wxss 否小程序公共样式表

一个小程序页面由四个文件组成,分别是:

文件类型必填作用

js 是页面逻辑

wxml 是页面结构

wxss 否页面样式表

json 否页面配置

注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名。

1. 小程序:快速创建第一个小程序

2. 小程序:文件结构

3. 小程序:配置

4. 小程序:页面构成

EXE 文件比较复杂,每个EXE文件都有一个文件头,结构如下。

EXE文件头的信息

├偏移量┤  意义   ┤

├00h-01h ┤MZ'EXE文件标记   ┤

├02h-03h ┤最后一页的字节数(每页512B)  ┤

├04h-05h ┤文件长度(字节数)除以512的商+1 -|   ┤

├06h-07h ┤重定位项的个数    ┤

├08h-09h ┤文件头除16的商   ┤

├0ah-0bh ┤程序运行所需最小段数 ┤

├0ch-0dh ┤..............大.... ┤

├oeh-0fh ┤堆栈段的段值 (SS)  ┤

├10h-11h ┤........sp    ┤

├12h-13h ┤文件校验和   ┤

├14h-15h ┤IP   ┤

├16h-17h ┤CS   ┤

├18h-19h ┤............    ┤

├1ah-1bh ┤............   ┤

├1ch  ┤............     ┤

―――――――――――――――――――――――――

.EXE文件包含一个文件头和一个可重定位程序映象。文件头包含MS-DOS用于加载程序的信息,例如程序的大小和寄存器的初始值。文件头还指向一个重定位表,该表包含指向程序映象中可重定位段地址的指针链表。文件头的形式与EXEHEADER结构对应:

EXEHEADER STRUC

exSignature dw 5A4Dh .EXE标志

exExraBytes dw 最后(部分)页中的字节数

exPages dw 文件中的全部和部分页数

exRelocItems dw 重定位表中的指针数

exHeaderSize dw 以字节为单位的文件头大小

exMinAlloc dw 最小分配大小

exMaxAlloc dw 最大分配大小

exInitSS dw 初始SS值

exInitSP dw 初始SP值

exChechSum dw 补码校验值

exInitIP dw 初始IP值

exInitCS dw 初始CS值

exRelocTable dw 重定位表的字节偏移量

exOverlay dw 覆盖号

EXEHEADER ENDS程序映象

包含处理器代码和程序的初始数据,紧接在文件头之后。它的大小以字节为单位,等于EXE文件的大小减去文件头的大小,也等于exHeaderSize的域的值乘以16。MS-DOS通过把该映象直接从文件拷贝到内存加载.EXE程序然后调整定位表中说明的可重定位段地址。

定位表是一个重定位指针数组,每个指向程序映象中的可重定位段地址。文件头中的exRelocItems域说明了数组中指针的个数,exRelocTable域说明了分配表的起始文件偏移量。每个重定位指针由两个16位值组成:偏移量和段值。 为加载.EXE程序,MS-DOS首先读文件头以确定.EXE标志并计算程序映象的大小。然后它试图申请内存。首先,它计算程序映象文件的大小加上PSP的大小再加上EXEHEADER结构中的exMinAlloc域说明的内存大小这三者之和,如果总和超过最大可用内存块的大小。则MS-DOS停止加载程序并返回一个出错值。如果总和没超过最大可用内存块的大小,它便计算程序映象的大小加上PSP的大小再加上EXEHEADER结构中exMaxAlloc域说明的内存大小之和,如果第二个总和小于最大可用内存块的大小,则MS-DOS 分配计算得到的内存量。否则,它分配最大可用内存块。分配完内存后,MS-DOS确定段地址,也称为起始段地址,MS-DOS从此处加载程序映象。如果exMinAlloc域和exMaxAlloc域中的值都为零,则MS-DOS把映象尽可能地加载到内存最高端。否则,它把映象加载到紧挨着PSP域之上。接下来,MS-DOS读取重定位表中的项目调整所有由可重定位指针说明的段地址。对于重定位表中的每个指针,MS-DOS寻找程序映象中相应的可重定位段地址,并把起始段地址加到它之上。一旦调整完毕,段地址便指向了内存中被加载程序的代码和数据段。 MS-DOS在所分配内存的最低部分建造256字节的PSP,把AL和AH设置为加载 .COM程序时所设置的值。MS-DOS使用文件头中的值设置SP与SS,调整SS初始值,把起始地址加到它之上。MS-DOS还把ES和DS设置为PSP的段地址.最后,MS-DOS从程序文件头读取CS和IP的初始值,把起始段地址加到CS之 上,把控制转移到位于调整后地址处的程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11159930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存