但是好象FAR的范围也不能超过1M吧!!!!!!
淘宝杜琨
我不是不信你,而是你说的模糊,
就是32,16位,我还理解成处理器那!!
我也知道这个意思,但是具体的就不太清楚了!!神vLinux飘飘
说的也是很模糊,例如我的编译器有几种内存模式,是不是在不同的模式中才能对他们进行特定的处理
还是说他们根本就和内存模式没有关系那???
那什么时候需要用远指针,什么时候又不需要那????
我申请了远指针,近指针对它们可以在使用时一样处理么???
还有就是如果这个远指针可以进行更大方面的内存处理,我要别的大的内存模式
又有什么用???
数组我可以用远指针,函数也可以!!!!
请明示!!
[此贴子已经被作者于2004-09-16 18:48:42编辑过]
原则很简单:
如果需要切换段地址的话,就需要远指针。
简单的说如果程序代码区有多个段(每个段长度:64K),或者数据区有多个段的话,就需要远指针或者函数远指针。
函数远指针就是远过程调用问题,
远过程与近过程断点的设置与恢复(通过栈空间)是不同的:
对于近过程:函数调用或指针引用均压入偏移地址和所使用到的寄存器值,
在恢复时要引用压入栈中的值设置程序运行环境。
对于远过程:函数调用或指针引用,需要压入段地址和偏移地址以及所用到的
寄存器值,同样在恢复时要引用压入栈中的值设置程序运行环境。
要说二者的区别就是,远过程或远指针的引用较近过程或近指针的引用速度慢一些。
建议你最好看看汇编书籍!
并且对于程序区、数据区和堆栈区的安排,不同的编译模式是不同的,根据程序规模选择合适的编译模式是明智的,否则造成程序无法正常运行。
推荐书籍 王士元的《c高级适用程序设计》
不过要求是对于硬件、c和汇编比较熟悉!
说的很概略,不知道你能不能明白!