浏览 4831 次
锁定老帖子 主题:汇编与C
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-29
C语言的本质是一种描述性的文本(语言),与机器无关.这种语言首先提供了一些表达式,用于描述流程和操作.另外为了更方便的操作,还提供了一些结构(数据类型). 而机器(CPU)的本质是一个模型或者架构,这个模型最关键的部分是为了达到目的设计了一套指令,这些指令提供了对数据操作和控制流程的能力,然后,为了使指令能够很好的运行,就有了配套的运算器,寄存器及流水线等. 从语言上来说C和这些指令并不是对应的,这不奇怪因为机器不是为C设计的(java芯片为java语言设计).但是C和机器的定义是很接近的.对机器而言,除了C语言的复杂数据类型及其操作,对C而言,则是机器中的一些特殊模式,如CPU工作模式,中断等. 大部分C语言可以通过机器语言几乎一一对应的表达.这也不奇怪,原因是C语言是按早期的机器模型设计的,而现代这种模型仍在新型机器中发挥作用. 而对于机器架构的特殊功能(非运算和 流程),则需要用汇编来表达,并通过C与汇编的调用接口来实现. 由此引发的一个思考是:为什么很早以前的机器模型没有革命性的进展?为什么没有能够直接解决问题的机器模型? 这个思考的答案,我可以部分的给出来,那就是数学,数学是人类解决实际问题的唯一手段,而数学是将问题分层次来解决的,复杂的计算最后还是要表现为最基本的运算. 同样的问题是:为什么我们现在还在用孙子兵法? 如果说有存在一个造物主的话,他为人类设定了这些,所有无论过多长时间,人类始终在一个框框中生活. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-01-29
CPU工作模式,中断可以在C中使用?我怎么不知道?我只知道C中有个SigHandler可以处理信号,好像还是Unix-Specific的
|
|
返回顶楼 | |
发表时间:2007-08-31
为什么很早以前的机器模型没有革命性的进展?为什么没有能够直接解决问题的机器模型?
----------- 好像整个基础科学在上个世纪50年代之后也有没有任何大的发展吧? 直接解决问题的机器模型,估计就只有人工智能或者大脑里集成芯片了,两者的技术基础都还不够,而且谁也说不准真的出来了会引起什么后果,还是晚个几十年再出来吧. |
|
返回顶楼 | |