【汇编 C语言】near 和 far 区别
如果你的子程序和主程序在同一个代码段,则使用near,调用发生后,主程序堆栈中只压入ip值;
如果你的子程序和主程序不在一个代码段,则使用far,调用发生后,主程序堆栈中将压入cs、ip值;
C语言的存贮属性由六种编译模式决定(参见TC集成环境菜单中的option->compiler->model选项),默认的编译模式为small, 在该编译模式下,指针的默认属性为near。 near 指针是16位指针,依赖一个段地址寄存器,指针变量就是位移量,利用 段地址寄存器+指针 来寻址,所以有64K之限制。far 指针是32位指针,不但有16位的位移量,还有16位的段地址,但此指针有个缺陷,增量时只加到位移部分,一旦16位的位移量超过了FFFF就会回到这个段地址的初始。所以,又引入了huge指针,huge指针与far一样,其区别仅在于使用了标准化的方法来表示,这样所有的地址都有一个唯一的表示方法,从而避免了far指针的问题。空指针规定了一种指针状态,如果没有这个空指针,就如数字没有了0。

浙公网安备 33010602011771号