您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么高级语言不支持寄存器操作呢?
寄存器,语言,高级为什么高级语言不支持寄存器操作呢?
发布时间:2019-02-08加入收藏来源:互联网点击:
为什么高级语言不支持寄存器操作呢?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
高级语言的目的就是屏蔽这些底层细节,如果需要不是有汇编吗,大锤砸墙,小锤扣缝
回答于 2019-09-11 08:43:50
看了几个回答,没一个靠谱的。
首先,是否支持寄存器操作可以说和语言基本上没关系。既然题目提到的是高级语言,那就隐含着在用户态下使用高级语言访问寄存器。
简而言之,能否在用户态下操作寄存器,取决于体系结构、总线、内存管理单元(MMU),以及寄存器的类型。
如果是CPU的寄存器,对于常见的架构如X86、ARM、MIPS等,通用寄存器可以在C/C++中使用嵌入式汇编来访问。但有些系统相关的寄存器,则需要在一定特权模式下才能访问。如果是外设的寄存器,在类Unix 系统下,可以通过内存映射的方式,把寄存器空间映射到内存中,然后就可以像访问内存一样来访问寄存器了(要做到这一点,需要操作系统、MMU、总线的共同支持)。实际上,对于支持内存映射的系统,很多脚本语言同样可以调用系统接口对寄存器空间进行映射后再访问。
回答于 2019-09-11 08:43:50
这不是高级语言不支持,是使用受限,寄存器由编译系统分配使用,如果你自己使用就必须对寄存器进行保护,否则不保证程序正确运行。寄存器之外的其他硬件资源,比如某端口是不可以使用的,操作系统保护了。
DOS年代高级语言支持寄存器,中断服务程序等低级操作的。
那时的机器性能差,很多操作需要直接使用资源来提高效率。
回答于 2019-09-11 08:43:50
我理解的原因是面向对象不同,面向单片机时语言不得不通过配置寄存器来实现功能。但是在面对操作系统时,寄存器这类底层操作就被操作系统处理了。这就好比当老板的只要传达任务给经理就可以,各部门经理会自己下达任务到指定个人。
回答于 2019-09-11 08:43:50
c和delphi都支持寄存器操作
回答于 2019-09-11 08:43:50
既然是高级语言,要针对所有电脑通用的,不可针对特定具体硬件的。但具体某个电脑编译器版本仍会通过某种不通用的办法让你访问低层硬件的,如C++Bui|der可以嵌入汇编,访问寄存器。
回答于 2019-09-11 08:43:50
一看就是青鸟速成班出来的。。。
C语言不是高级语言吗?
回答于 2019-09-11 08:43:50
专事专做,玩内存,寄存器的语言就好好去研究内存寄存器,高级语言就专门研究他该做的事,例如架构,业务,术业有专攻才是最专业的
回答于 2019-09-11 08:43:50
高级语言,高级语言编译器为的就是抹平机器的差异。
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |