Jack:为什么说C/C++语言是偏向硬件的语言呢?

我:这是把C与java等无指针/引用类编程语言相比较而得出的结论。因为java在j2ee的框架下,写的代码仅仅是逻辑,本质上和写shell脚本没啥大的区别。而写这些代码的童鞋,基本上就是码农的待遇,还算不上程序猿。

Jack:我猜写java代码的人想用砖头来拍你。

我:畅所欲言,欢迎拍砖。

Jack:那C和汇编哪一个是面向机器的呢?

我:C和汇编都是面向机器的。也有人说C是面向过程的。这并不矛盾,只是视点不同。

Jack:既然两者都是面向机器的,为什么会有C语言出现呢?

我:计算机刚出生的时候,每种不同的计算机都有不同的指令。这些指令,能操作计算机的所有部件,使其正常运转。

Jack:你说了等于没说。

我:我说了,但是你没听懂。你说说看,计算机的所有部件是指哪些呢?

Jack:大方向分,CPU、内存、外部设备。

我:是的。编程语言生成的代码是给CPU来执行的,用来操作内存以及外部设备。而每一门编程语言又必须具备逻辑控制结构(顺序、选择、循环),这是通用的。

Jack:日。这些东西太虚了,没啥意思。

我:基本功太差就会觉得这些话太虚。对于计算机而言,内存的指令以及逻辑是通用的,所以,完全可以把它抽象出来,生成另外一门编程语言,也就是大名鼎鼎的C语言。也就是说,C语言其实仅仅具备内存控制能力,外部设备的控制能力是大大的没有。

Jack:你说的真的假的?既然C语言只有对内存的控制能力,没有对外部设备的控制能力,那C语言怎么能写出操作系统内核呢?

我:C语言仅仅写出了操作系统内核的逻辑以及内存控制部分,具体对外部设备的控制是由汇编代码完成的。

Jack:具体一点点呢?

我:也就是说,所有外部设备的驱动代码都是汇编写的。大部分逻辑内存控制部分由C完成。我只能说到这个份上了,再看不懂,真没办法了。

Jack:明白了。但是,你写这篇文章的意义在哪里呢?

我:我举个例子。褚霸曾在我之前的公司做学术交流,提到,在2012年11月11日的淘宝大促中,压力最大的不是db,也不是逻辑层,而是网卡被打满了。这个网卡被打满了,你能联想到哪些idea呢?或者有哪些解决办法吗?

Jack:我日。

我:如果本源技术学得不好,只能做个熟练工,就是你现在的状态。

C语言与汇编“硬在哪里”——什么是面向硬件?的更多相关文章

  1. arm:c语言和汇编混合编程

    仅作演示. 1.C和汇编可相互调用,汇编子函数格式参考 汇编:普通的函数调用的汇编代码解析 http://www.cnblogs.com/mylinux/p/4139972.html 本文演示了 : ...

  2. C语言ASM汇编内嵌语法

    转载:http://www.cnblogs.com/latifrons/archive/2009/09/17/1568198.html C语言ASM汇编内嵌语法 .3 GCC Inline ASM G ...

  3. C语言与汇编的嵌入式编程:求100以内素数

    写汇编之前,需要搞清楚C语言代码的写法,这里以最简单的算法举例说明 C代码如下: #include <stdio.h> void main(){ int i,j; ; ;i<=;i+ ...

  4. C语言ASM汇编内嵌语法【转】

    转自:http://www.cnblogs.com/latifrons/archive/2009/09/17/1568198.html GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作G ...

  5. C语言调用汇编实现字符串对换

    1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib. ...

  6. 《Linux内核分析》week1作业-分析一个简单c语言的汇编代码

    1.C语言源码 #include <stdio.h> int g(int x){ ; } int f(int x){ return g(x); } int main(){ )+; } 2. ...

  7. Keil 中关于C语言编译生成汇编代码函数名规则

    在keil 中 C语言的函数有带参数和不带参数之分. 一般的资料里说fun(void)类型的函数不带参数,所以,keil编译器生成的汇编的调用地址(函数名) 为fun.这没有错.事实上,不管C语言的函 ...

  8. C语言的本质(32)——C语言与汇编之C语言内联汇编

    用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码.另外,有些平台相关的指令必 ...

  9. C语言的本质(30)——C语言与汇编之ELF文件格式

    ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Obj ...

随机推荐

  1. 天体程序猿叹息——变化hosts对

    没有解释更新一SDK像贼,我真诚地希望在天上Android.ios我们已经禁止了.要玩不能玩才最寂寞 安装成功不寂寞hosts文件: 74.125.237.1 dl-ssl.google.com173 ...

  2. WebApp 框架

    Razor 在WebApp 框架的运用   前面有两章介绍了WebApp框架<WebApp MVC,“不一样”的轻量级互联网应用程序开发框架>和<WebApp MVC 框架的开发细节 ...

  3. Linux下防火墙设置

    Linux下开启/关闭防火墙命令  1) 永久性生效,重启后不会复原 开启:chkconfigiptables on 关闭:chkconfigiptables off 2) 即时生效,重启后复原 开启 ...

  4. Oracle中注意用户的访问权限

    新增表.序列.存储过程等,要注意用户(例如System)的权限.如果在增删改查过程中出现数据库读写权限的报错,则在建表(或者序列.存储过程等)时,在脚本前面加 GRANT CREATE TABLE T ...

  5. 深入浅出SQL注入

    原文:深入浅出SQL注入 之前在做学生信息管理系统和机房收费系统的时候,对于SQL注入的问题已经是司空见惯,但是并没有真正的地形象生动的理解SQL注入到底是什么玩意儿.直到这次做牛腩才在牛老师的举例之 ...

  6. 雕爷:我眼中的O2O成长路径

    嗨,老周,这篇文章写给你.知道你最近正在纠结于O2O的择业分析,因为你是有极高身价的人,所以选择起来必须谨慎,选错了,不是身家那千把万的损失,更是一生荣耀的赌注和起落. “所谓战略,就是站在未来看今天 ...

  7. 赠书《JavaScript高级程序设计(第三版)》5本

    本站微博上正在送书<JavaScript高级程序设计>走过路过的不要错过,参与方式,关注本站及简寻网+转发微博:http://weibo.com/1748018491/DoCtp6B8r ...

  8. .NET MVC4 实训记录之五(访问自定义资源文件)

    .Net平台下工作好几年了,资源文件么,大多数使用的是.resx文件.它是个好东西,很容易上手,工作效率高,性能稳定.使用.resx文件,会在编译期动态生成已文件名命名的静态类,因此它的访问速度当然是 ...

  9. Orchard Module,Theme,Core扩展加载概述

    Orchard 源码探索(Module,Theme,Core扩展加载概述) 参考: http://www.orchardch.com/Blog/20120830071458 1. host.Initi ...

  10. jQuery手机对话框插件

    最近,公司一直在做微网站之类的,一直在看别的微网站,发现一些对话框的样式很不错,所以自己就动手把样式剥离出来写成一个简单的插件,方便其他项目中使用到.废话不多说,上插件源码: /* *jQuery简单 ...