免费注册 查看新帖 |

Chinaunix

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

[C] C语言可以直接对硬件进行操作吗? [复制链接]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
41 [报告]
发表于 2012-10-25 12:54 |只看该作者
这个问题问的挺没意义。。。
各位都是熟读C标准的,一定知道C定义了自己的抽象体系,总所周知C的抽象体系最[red]接近[/red]实际物理体系,再加上自身提供的内联汇编手段,因此说它能直接操作硬件没什么大问题。这个抽象体系和底层支撑的物理体系之间有多吻合决定了C对它的直接操作程度。

有的物理体系比C的抽象体系更底层,这时候不得不用更底层的汇编来为C和系统搭建环境,比如x86,arm7,mips等等,最开始需要初始化静态存储区,设置C的堆栈,设置异常处理句柄等。
有的物理体系就基本定义成了C的抽象体系,这时候基本不再需要汇编,物理设计就已经给C搭了环境,配合行业标准提供的封装寄存器操作的一个头文件(就是几个_asm{}封装的函数),普通用户仅用C便可完成所有操作,比如arm在前几年推出的cortex系列芯片,上面说堆栈,异常句柄等等,都不需要汇编来处理了。
有的体系提供mmio,这样子直接用C的地址操作就完成了所有外设操作,物理体系和C之间也越来越吻合。

另外,人家原话是“非常容易地利用C语言直接对计算机的硬件单元位、字节和地址进行操作”
C标准里提供asm,而一些体系上确实能用C直接操作机器,如果你不想用汇编,也可以用行业标准提供的C封装。
太抠字眼就失去质疑本身的意义。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
42 [报告]
发表于 2012-10-25 12:58 |只看该作者
mirnshi 发表于 2012-10-25 12:25
写微码,不叫软件开发?你让写NP微码的情何以堪?
在CPU的大市场里,x86太小。看看周围,是x86的cpu多, ...

这要看如何看待这个问题了。
更加彻底点,FPGA叫软件开发吗?
可能是因为电子业的人更喜欢称呼它为固件,而不称之为软件。
对于很多的处理器,一般喜欢用本地并行总线控制一切的引脚。我还是觉得X86的in/out有点邪恶

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
43 [报告]
发表于 2012-10-25 12:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
44 [报告]
发表于 2012-10-25 12:59 |只看该作者
回复 38# mirnshi


   
    晕. 那么你的意思是NP微码是直接控制硬件的? Network Processor也是一颗CPU, NP微码就是相当于通用CPU/嵌入式CPU/单片机上的汇编码的层次. 这么说汇编码就是直接操作硬件的? C语言编译之后的东西不是? 就算你的NP微码用0101序列来写, 那这0101序列是直接操作硬件的? 不需要CPU解码? CPU硬解码编译器什么的又该怎么算...

    cjzaiss说的微指令是, 像x86这样的复杂指令集, 其指令要经过CPU编译器/解释器(硬件)解码为微指令, 解码后的微指令才是可以直接执行的. 这当然是属于硬件设计范畴的东西, 程序员可以控制微指令?

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
45 [报告]
发表于 2012-10-25 13:03 |只看该作者
回复 42# pmerofc

是扩展,也是C标准支持的扩展吧?也就是说C官方有提供这个手段供你选择使用。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
46 [报告]
发表于 2012-10-25 13:08 |只看该作者
madaossan 发表于 2012-10-25 12:59
回复 38# mirnshi


呵呵,回帖要看上下文。

我只是说写微码的,也算是软件开发。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
47 [报告]
发表于 2012-10-25 13:14 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
48 [报告]
发表于 2012-10-25 13:24 |只看该作者
cjaizss 发表于 2012-10-25 12:58
这要看如何看待这个问题了。
更加彻底点,FPGA叫软件开发吗?
可能是因为电子业的人更喜欢称呼它为固件 ...


呵呵,这个有些极端了。做FPGA,一般更强调硬件的技能,没有时序逻辑是没法做vhdl的。

论坛徽章:
0
49 [报告]
发表于 2012-10-25 13:29 |只看该作者
starwing83 发表于 2012-10-25 10:16
稍微说一下,内核最重要的其实是那个最不起眼的调度策略。这个策略要经过仔细的调整,比如说,一个最简单的 ...


2.6后期O(1)早就不见了。。。

这个东西推他的时候捧地不得了,出新东西的时候,老东西的优点又闭口不提了。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
50 [报告]
发表于 2012-10-25 13:31 |只看该作者
cjaizss 发表于 2012-10-25 12:58
这要看如何看待这个问题了。
更加彻底点,FPGA叫软件开发吗?
可能是因为电子业的人更喜欢称呼它为固件 ...


如果在极端些,fpga装载一个arm核的情况,可以用C写程序,编译后(arm的)下载到fpga里运行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP