免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 湿了耶
打印 上一主题 下一主题

[C] 为什么C语言接近硬件? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-02-15 10:40 |只看该作者
回复 8# 湿了耶


中断控制器这种东西的访问,不同平台上差异很大,C语言不会直接在语法中实现的,因为它毕竟不同于汇编,是要做跨平台的。你提到IN/OUT指令只是因为你只熟悉x86平台,在PowerPC上中断控制器的寄存器直接映射到地址空间中,用内存访问的方式读写;而我现在应用的一个多核平台上,控制这些I/O的寄存器则是采用I/O“报文”。

C语言被称为“中级”语言,有很重要的一点儿就是它能直接做地址访问,另外它对于数据结构的抽象本身没做什么语言级的支持。在C里面严格来说没有输出参数、没有数组,有的就是地址。

论坛徽章:
0
12 [报告]
发表于 2010-02-15 12:00 |只看该作者
楼上说得好,java做这些,是要靠虚拟机的吧? 一句话,java就被否定了。
c语言接近硬件,从历史上来说,c语言的出现,只是为了方便汇编的编写? 在汇编上的封装?(这点我也不太确定)
从本质来说,就是指针。c语言的指针,也就是c语言看待内存的观点,与汇编是一致的,与机器也是一致的。在java
中,你知道你的一个java对象的地址,到底在哪里么? c里面就可以知道,至少在操作系统这一层上,c知道,它就在那!
那一个page上!

论坛徽章:
0
13 [报告]
发表于 2010-02-15 13:01 |只看该作者
跪求

论坛徽章:
0
14 [报告]
发表于 2010-02-15 13:08 |只看该作者
谢谢,明白了,
存储器映像I/O寻址

论坛徽章:
0
15 [报告]
发表于 2010-02-15 17:35 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2010-02-15 17:55 |只看该作者
谢谢,明白了,
存储器映像I/O寻址
湿了耶 发表于 2010-02-15 13:08


Google: MMIO (Memory-Mapped I/O)

论坛徽章:
0
17 [报告]
发表于 2010-02-15 17:57 |只看该作者
回复 15# luoleicn

这没什么好争的。在JVM被嵌入到主流CPU core之前,再怎么吹Java都是假的。

论坛徽章:
0
18 [报告]
发表于 2010-02-15 18:54 |只看该作者
5楼的8259A真是NB啊!

论坛徽章:
0
19 [报告]
发表于 2010-02-15 20:38 |只看该作者
11 楼说的不错 。我认为 C语言是低级语言

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
20 [报告]
发表于 2010-02-15 22:46 |只看该作者
本帖最后由 cjaizss 于 2010-02-16 11:55 编辑

因为它可以操纵local bus或者别的也以地址/数据形式存在的bus(比如串行的形式)
另外一点,它是过程式的语言,和基于指令集的处理器很像。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP