维基百科和其他资源描述了可供x86平台上的编译器使用的different memory models (实数模式)。
我可以看到微型模型和小型模型之间的区别(在微型模型中,代码、堆栈和数据段寄存器指向相同的段,在小型CS中,代码、堆栈和数据段寄存器指向一个段,SS和DS指向另一个段),以及小型和紧凑模型之间的差异(CS、SS和DS指向三个独立的段),但是我无法理解小型和中型之间的区别,因为在两个CS中,CS指向一个段,SS和DS指向另一个段。
我意识到媒体模型是为具有多个代码段的程序设计的,但是这种差异是如何实现的呢?它到底改变了什么?
发布于 2012-08-16 00:57:34
从Turbo C++内置帮助(菜单:选项->编译器->代码生成...->模型,按F1)
Small
对于中等大小的应用程序,请使用小型模型。
代码和数据段是不同的,不会重叠,因此您有64K的代码和64K的数据和堆栈。总是使用近邻指针。
Medium
medium模型最适合不会在内存中保留太多数据的大型程序。
远指针用于代码,但不用于数据。因此,数据加堆栈限制为64K,但代码最多可占用1MB。
所以,现在你就知道了。在中等模型中,您使用远指针来访问代码(代码具有远调用和远返回指令,并使用远函数指针进行操作),并且您可以有多个段。标准的16位DOS .EXE文件格式支持多个段。在小模型中,所有的指针都很接近,所以你不能也不能改变程序中的默认代码段。
https://stackoverflow.com/questions/11971579
复制相似问题