C/C++语言里的near和far是什么意思?

2019独角兽企业重金招聘Python工程师标准>>> ...
摘要由CSDN通过智能技术生成

C语言里的near和far是什么意思?-CSDN论坛-CSDN.NET-中国最大的IT技术社区
http://bbs.csdn.net/topics/390275885

32位系统中已经没有用了,16位才有用。
近指针、远指针,这是16位CPU造就的怪胎。32位以上的CPU没这玩意。

16位CPU(主要指80386和80486)内部数据总线为16位,地址总线为24位。这就意味着一个字(16bit)存不下一个地址,要用到两个字。习惯把高位字称为段地址,低位字称为偏移地址。

程序运行时,OS会给程序分配几个内存段供程序使用,主要的有代码段(CS)、数据段(DS)、堆栈段(SS)。根据不同的编译模式这几个段可能重合。

far 远跳转/指针,它会带一个段前缀。near 没有段前缀。

当指针指向的地址与数据段的段地址相同(即处于数据段内),这时可以不记录段地址而仅记录偏移地址(只需16bit)。这种指针称为近指针(near指针)。在16位CPU下,缺省的指针类型。

当指针指向的地址与数据段的段地址不同(即处于数据段外),这里不仅要记录偏移地址还要记录段地址(共需32bit)。这种指针称为远指针(far指针)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值