关于far*指针

基础知识之关于far,near,huge,base指针 在研究两个指针之前,我们先来理清win16,win32的一些知识。 运行在16位CPU(80826微处理器)微机上的Windows16,对于内存按照“分段内存模式”(Segment Memory Mode)进行使用.在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 Windows 95开始的32位机上,支持32位平面内存模式,为Win32写的程序使用 阅读详情
  FAR* 现在不用了, 以前用在16位代码里, 因为代码是16位的, 所以指针不够长. 为了表示32位的地址. 应该使用 **r 来修饰 一个指针。

16位机情况:
由于PC机的存储器地址是由段地址和偏移地址组合而成,每个段不能超过64K字节地址,因此同一个段内的地址存取,
仅用偏移地址就可以实现,用指针时,16位就可以了。称为近程指针nea*,当要在另一个段内取数据时,就要跨越段,
即要指明存取段的段地址和偏移地址,这时段地址寄存器所存段地址要变,因此在使用指针指向另一个段内地址时,
就要用32位表示(即段地址:偏移地址),这类指针,称为远程指针,是***型.


far*为远程指针 
    
    远程指针是指32位的指针,它表示段地址:偏移地址,如定义远程指针P指向B500段的2号地址,即B500:0002,则可写作:
cha* far*p=(cha* far*)0xB5000002;
因而用远程指针可以指向任何的数据段内地址,在大数据内存模式下,当跨越段进行数据存取时(即存取超过64K的数据),可以采用
远程指针。当使用far型指针时,因要进行跨段寻址,数据段寄存器的值要更换,因而加长了程序的执行时间。
    另外远程指针的值在进行加减时,只有偏移的地址部分进行运算,段地址不参加运算,即段地址不变,因此会出现折回现象。 

 
关于【中孚计算机终端保密检查系统】的卸载 卸载中孚计算机终端保密检查系统 阅读详情

相关推荐

C#精准获取Windows已安装应用清单的完整方案

Windows已安装应用识别是IT资产管理、安全合规与自动化运维的基础能力。其核心原理在于突破文件系统表象,以注册表为可信数据源,分层解析HKLM/HKCU、64位/32位视图及MSI Products路径中的元数据。技术价值体现在可验证(如过滤SystemComponent=1)、可关联(通过ProductCode绑定补丁与许可证)、可操作(启动路径二次验证+卸载命令沙箱执行)。典型应用场景包括终端合规审计、软件资产清查、静默卸载脚本开发及多版本应用聚合分析。本文聚焦C#原生实现,覆盖注册表四路采集、La

weixin_33552698的博客 634

far指针与near指针

far指针与near指针 win16、win32相关知识: 运行在16位CPU(80826微处理器)微机上的Windows16,对于内存按照“分段内存模式”(Segment Memory Mode)进行使用.在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 16位CPU(主要指80386和80486)内部数组总线为16位,地址总线为24位。这就意味...

寂蝶难双,窃窃思羽. 2838

PWM与光耦的完美联姻:低成本4-20mA转换方案揭秘

本文揭秘了PWM与光耦结合的低成本4-20mA转换方案,适用于工业自动化领域。通过PWM信号控制输出电流,光耦实现电气隔离,该方案成本低廉、电路简单且隔离可靠。文章详细介绍了两种经典电路实现方案,包括四光耦线性模式方案和PWM控制LM317方案,并提供了实战技巧与优化策略,帮助中小企业和电子DIY爱好者构建经济高效的4-20mA转换系统。

weixin_29229055的博客 536

near、far、huge三个指针的区别

1、近(near)指针     近指针是16位指针,它只含有地址的偏移量部分,    当用汇编语言和C   语言混   合编程时,汇编语言总是假设DS含有数据目标的地址。       虽然近指针占用空间最小,执行速度最快,但它有一个严格的限       制,即只能64K字节以内的数据,且只能存取程序的数据段内的数据。       如果在小模式下编译一个程序,而这个程序企图增量一个近指针使

Wolf的专栏 4355

复现论文报错解决

博主复现论文代码过程中遇到的各种报错及解决方案~

rellvera的博客 1060

0.1 专栏导读:为什么需要从 MM 理解 HMM

本文探讨了GPU计算框架中CPU与GPU内存管理的困境,介绍了Linux内核的HMM(Heterogeneous Memory Management)解决方案。传统显式拷贝模型存在编程复杂、指针失效等问题,而HMM通过共享虚拟地址空间、自动页面迁移等机制实现透明内存管理。文章分析了HMM依赖的Linux内存管理基础设施,包括页表遍历、MMU通知、ZONE_DEVICE等核心组件,并梳理了从经典MM到支持异构设备的进化历程。最后给出了学习HMM的8层知识体系,强调理解底层MM机制是掌握HMM的关键。

图形/计算GPU的驱动与虚拟化技术分享园地 767

C 中near far 指针 及相关函数

1、64K限制的困扰我们考虑下面一段16位C语言代码片断:char g_c;void func (char *p){ char c; p = &c; p = &g_c; p = (char *)malloc(10 * sizeof(char)); free(p); return;}显然,g_c是全局变量,按照教科书的说法,它应该放在全局变量区,c是局部变量,因此c放在栈区,而malloc所申请的空间应该是在堆区。上面的代码从语义上讲没有半点错误,一个指针p可以指向全局变量区的内存,也可以指向堆区或栈区的内存

Po Rui的专栏 1736

基于matlab的主成分分析的人脸二维码识别系统

人脸识别因其在系统安全验证、信用验证、刑侦跟踪、身份管理、视频会议、人机交互、智能家居等方面的巨大应用前景,成为当前模式识别和人工智能领域越来越热门的一个研究方向。随着安全入口控制和二维码智能扫描应用需求的快速增长,基于二维码识别的生物人脸统计识别技术也引起了人们的重视。本案例将详细讲解基于主成分分析的人脸特征提取的原理与方法,并将其与 QR 二维码的编解码进行结合,将 MATLAB 作为工具平台,调用 QR 二维码编解码应用程序,进而实现一个人脸二维码自动识别的系统原型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 977

C语言far远程指针,C语言近程型(near)和远程型(far)的区别是什么?

DOS用一种分段结构来寻址计算机的内存,每一个物理存储位置都有一个可以用段一偏移量方式来访问的相关地址。例如,下面就是一个典型的段式地址:A000:1234冒号左边的部分代表段地址(A000),冒号右边的部分代表相对于段地址的偏移量。DOS下的每个程序都是按这种方式访问内存的——尽管段一偏移量寻址方法的机理对大多数C程序员来说是隐蔽的。当你的程序被执行时,一个存放在数据段(DS)寄存器中的数据段地...

weixin_33571513的博客 1121

Cursor使用教程:用 Cursor 创建第一个 Java 项目

Cursor是一款基于VS Code的AI编程编辑器,专为开发者设计。安装前需确保JDK 8+、Maven 3.8+等环境配置,支持Windows系统。编辑器提供中文界面选项,可通过扩展市场安装语言包。创建Java项目支持手动和AI提示词两种方式:手动需创建目录结构并编写代码;AI方式则通过自然语言描述快速生成项目框架和代码。标准Java项目包含src/main/java主代码目录、src/test/java测试目录及pom.xml等配置文件。Maven项目中,pom.xml是核心配置文件,管理项目依赖与构

博客 3547

SOC、SOH、OCV

1)放电实验法的测量SOH结果最为准确,但是深度放电会对影响电池的寿命;2)电阻折算法仅将电阻作为评价SOH的依据,但电池老化时电阻的变化范围较小,因此该方法的误差较大;3)电阻折算法需要对电池进行大量的实验,绘制成Map图,但是该方法有一定的局限性,针对不同的电池需要绘制不同的Map图;4)阻抗分析法是目前最为前沿的方法,可以根据阻抗谱较为直观的分析SOH的变化,但是该方法需要的成本较高,每台设备约为5万美元。

m0_61973119的博客 2万+

Leetcode每日一题:面试题02.02.kth-node-from-end-of-list-lcci(返回倒数第k个节点)

思路:典型得快慢指针问题,快指针与慢指针中间隔着k-2个节点,那么同时++快慢指针,当快指针指向链表结尾节点时,慢指针指向倒数第k个节点; struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; int kthToLast(ListNode *head, int k) { ListNode *left = head, *right = head; int count = 1; .

CodeLuweir 的博客 3437

BMP390L数字大气压传感器原理图设计,已量产(压力传感器)

在工业设备的室内定位、地下设施监测这类 GPS 信号盲区场景里,气压高度检测的 “靠谱程度” 直接决定了系统的可用性 —— 毕竟谁也不想在地下停车场导航时,设备把 1 楼误判成 3 楼。最近在项目里基于博世 BMP390L 做了硬件电路设计,正好聊聊这款工业级数字气压传感器的硬实力,以及原理图里的那些关键设计细节。

不脱发的程序猿 352

LPVOID 一个没有类型的指针

如果要调用段外的变量或函数就要声明成far远指针,典型的用法就是调用DLL的远堆变量,它是“远”的。far和near在现在Win32平台下没什么关系了 因为现在内存寻址是flat模式, 也就是平坦的4GB寻址.LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为传递),然后在使用的时候再转换回来。可以将其理解为long型的指针,指向void型。void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 849

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LPVOID类型

LPVOID是一个没有类型的指针,也就是说你可以将任意类型的指针赋值给LPVOID类型的变量(一般作为参数传递),然后在使用的时候再转换回来。 可以将其理解为long型的指针,指向void型。 头文件windef.h中有typedef void far *LPVOID 32-bit指针,指向一个未指定类型的数据 例如: class CMyClass {    void Sta...

简约不简单 2191

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

c语言指针near,near指针和far指针

near指针和far指针在DOS下(实模式)(near指针和far指针使用的操作系统要求,现在DOS时代已经成为过去)地址是分段的,每一段的长度为64K字节(0x0000~0xFFFF),刚好是16位(二进制的十六位)。near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以...

weixin_39957027的博客 845

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

near指针,far指针,huge指针

near指针和far指针 在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。 near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。 far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移

奋斗的PIG 805

c 中的far 指针

near指针和far指针?在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)

daisy_cheung的专栏 976

关键字__rptr、__eptr、 __pptr和__far

关键字__rptr、__eptr、 __pptr和__far

qq_45571840的博客 385

远(far)指针

二、远(far)指针远指针不是让编译程序把程序数据段地址作为指针的段地址部分,而是把指针的段地址与指针的偏移量直接存放在指针内。因此,远指针是由4 个字节构成。它可以指向内存中的任一目标,可以用于任一编译模式,尽管仅在紧凑、大和巨模式下远指针才是缺省的数据指针。因为远指针的段地址在指针内,熟悉80X86 汇编语言的人都知道,这意味着每次使用远指针时都需要重新装载段寄存器,这显然会降低速度。应该注意

napoleon_icer的专栏 1030

远指针FAR/近指针NEAR/_STDCALL/_CDECL

今天看到inet_ntoa函数的原型,这个返回类型实在是没见过: char FAR* PASCAL FAR inet_ntoa(struct in_addr in); 搜索了一下: 1.关于FAR:(来自http://blog.youkuaiyun.com/sphone89/article/details/7184976) FAR 是16位系统时候的概念了,代表远指针的意思。 近指针是1

xingdebocqyz的专栏 918

科锐课堂笔记:2017/3/14 指针

科锐课堂笔记:2017/3/14 指针

flukeshen的博客 569

c语言指针near,C语言中 near指针和far指针

near指针和far指针在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以...

weixin_27064205的博客 1792

far指针 near指针 hung指针

   near指针和far指针在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量

hnney的专栏 762

有关near和far指针

  1.三种存储属性的指针:C语言的指针有三种存储属性,分别是:                     near (近)指针:16位段内偏移地址                      far(远)指针:16位段地址*2的4次方+16位段内偏移地址                       huge(巨)指针:32位规格化的具有唯一性的内存地址  C语言的存贮属性

adousen的专栏 2913

如果使用freescale far指针

1. 使用far指针的目的在于不同page间的访问,即我们可以在当前ROM区通过3字节的far指针去访问其他paged区的数据。2. far指针使用方法:(只举例RAM访问)应用场景:在相应的paged RAM定义了一个变量或数组,可是,我们要在DEFAULT_RAM去访问这些数据,该怎么办?步骤:1>. 在paged RAM区定义一个变量或数组,如下:#pragma push

汽车电子基础软件及零部件 1704
上一篇: #if 0 #endif的含义
下一篇: 关于名字空间namespace
firebolt2002
博客等级 码龄24年 74粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值