4.英语翻译高手请进far: 远指针 在DOS下(实模式)地址是分段的 , 每一段的长度为64K字节 , 刚好是16位(二进制的十六位) 。
near指针的长度是16位的 , 所以可指向的地址范围是64K字节 , 通常说near指针的寻址范围是64K 。far指针的长度是32位 , 含有一个16位的基地址和16位的偏移量 , 将基地址乘以16后再与偏移量相加 , (所以实际上far指针是20位的长度 。)
即可得到far指针的1M字节的偏移量 。所以far指针的寻址范围是1M字节 , 超过了一个段64K的容量 。
例如一个far指针的段地址为0x7000 , 偏移量为0x1244 , 则该指针指向地址0x71224.如果一个far指针的段地址是0x7122 , 偏移量为0x0004 , 则该指针也指向地址0x71224 。如果没有指定一个指针是near或far , 那么默认是near 。
所以far指针要显式指定 。far指针工作起来要慢一些 , 因为每次访问一个far指针时 , 都要将数据段或程序段的数据交换出来 。
另外 , far指针的运算也比较反常 , 例如上面讲到的far指针指向同一个地址 , 但是比较的结果却不相同 。什么时候使用far指针? 当使用小代码或小数据存储模式时 , 不能编译一个有很多代码或数据的程序 。
因为在64K的一个段中 , 不能放下所有的代码与数据 。为了解决这个问题 , 需要指定以far函数或far指针来使用这部分的空间(64K以外的空间) 。
许多库函数就是显式地指定为far函数的形式 。far指针通常和farmalloc()这样的内存分配函数一起使用2.翻译:政府(对此类某物)的使用 , 复制 , 或公开受到限制 , 这些限制条件详见FAR部分中商业计算机软件权利限制条款的附属条款(c) 。
文章插图