1. c语言能对硬件直接操作是什么意思,小弟初学者,请高手解答!非常感谢!!!
C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。也就是说,C语言可以直接对物理地址进行操作。
学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志。
在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。
2. C语言可以直接对硬件进行操作吗
不能。
首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。
其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
以GCC编译器为例,这个可以分为四步。
第一步是预处理,包括语法检查等工作。 gcc -P abc.c 第二步由源程序生产汇编语言代码。 gcc -S abc.c 会生成abc.s文件,这个文件里就是汇编代码。 第三步编译器生成目标代码,一个源文件生成一个目标代码。 gcc -c abc.c 会生成abc.o 第四步连接器从目标代码生成可执行文件。 gcc abc.o
最后,相对来说,C语言在高级语言当中是最贴近物理层面的语言。它也被称作高级语言里面的低级语言。因为它很多方面都非常贴近硬件。典型的就是指针,这是一种通过物理地址直接操作内存的变量。
3. c语言为什么可以实现操作硬件的功能
楼上的描述不准确,c语言直接对硬件操作的例子比如直接通过c语言写入芯片的控制寄存器,配置芯片的工作模式,达到用户希望的效果,如定时器。这一点类似于单片机。
对内存的操作事实上还是由更低级的存储器控制芯片完成的。
4. 都说C语言可以直接操作硬件
不能。
首先,C语言不能够直接对硬件进行操作。从本质上来说,连汇编语言都不可以。只有机器语言能够直接操作硬件。
其次,C语言要操作硬件是必须经过一系列的编译转换。最终它会成为0101的机械码,这个时候它根本不是我们所能够理解的C语言了。
以GCC编译器为例,这个可以分为四步。
第一步是预处理,包括语法检查等工作。
gcc -P abc.c
第二步由源程序生产汇编语言代码。
gcc -S abc.c
会生成abc.s文件,这个文件里就是汇编代码。
第三步编译器生成目标代码,一个源文件生成一个目标代码。
gcc -c abc.c
会生成abc.o
第四步连接器从目标代码生成可执行文件。
gcc abc.o
最后,相对来说,C语言在高级语言当中是最贴近物理层面的语言。它也被称作高级语言里面的低级语言。因为它很多方面都非常贴近硬件。典型的就是指针,这是一种通过物理地址直接操作内存的变量。
5. 用C语言写的程序怎么与硬件联系起来
通过串口和单片机就能联系起来了! 你的计算器实现的功能是按键加减乘除等等 单片机上有按键,只要你编程没错 接上之后就可以了 然后做成实物需要买板子以及电阻之类的器件焊接而成,最后把程序拷到单片机里 就可以了! 对了,我觉得你可以买本这方面的书当参考,不用别的书 大学工科类单片机教材就可以的!
6. C语言怎样直接实现控制硬件
如果是电脑程序的话,譬如你在vc6.0里面c语言里面编写一个程序,那么vc6里面的编译器会把你的c语言语句按照对应的关系翻译成你计算机能识别的计算机语句,然后你电脑cpu会按照这些指令来控制你的硬盘,内存读写之类的硬件操作。
如果是单片机之类的话,譬如你在keil里面用c语言编写了一个单片机程序,那么keil的编译器会把你的c语言程序编写成汇编语言程序文件,然后把那个汇编程序文件烧到单片机芯片上就可以让芯片按照指令工作了。
7. 为什么都说C语言能直接访问硬件
C语言是直接封装的汇编语言,它的封装性比起java、c#等高级语言要差很多,而汇编语言是使用的cpu等硬件的指令集,所以说C语言可以直接访问某些硬件。
8. C语言怎么写直接在硬件上运行的代码
谁告诉你Linux全是用C写的?没有任何操作系统可以完全由高级语言来编写。直到现在Linux依然有10%到20%的底层系统是由汇编语言来写。这部分负责直接参与分配内存和控制CPU工作分配,而这些工作是C无法做到的。单片机里存有已经用汇编语言所写的C语言的运行系统,所以可以直接调用。如果你在一台没有安装任何系统的电脑上运行C程序是绝对不可能的。谁来给你分配内存?谁来调整进度的分配和调用?你以为C程序可以自己做到这些?
9. 为什么说C语言是直接对硬件操作的语言
VB不行
语言从低级到高级,语义功能越来越完善(意思是写出来的程序越来越接近人类语言),但是同时失去了对硬件的直接操纵能力,而且执行效率越来越低。
比如最低级的机器语言(全部是各种数字),没学过根本看不出是什么意思,但是对硬件操纵能力最强,想怎么让硬件做硬件就会怎么做。执行效率为百分之百。
其次是汇编语言,汇编语言稍微向英语迈进了一点,但是很有限,一般人也看不明白的,比如这句
mov
a,b
谁知道什么意思!其操纵硬件能力也极强,随心所欲,执行效率基本也是百分之百。
而C语言介于高级和低级之间,代码容易理解,还可以用指针操纵硬件(不过还是很局限的,CPU就无法之间操纵了),执行效率为80%,对于一直语言来说很不错了。
Basic语言完全是高级语言,代码简单,但是不具备操纵硬件能力,也就是你想写个代码直接让内存怎么怎么样,内存不听你的,只听编译好的程序的。而且执行效率也很低了。
10. c语言可以直接对硬件操作吗
害,这个问题怎么说呢,操作系统才是直接对硬件进行操作的,如果操作系统使用C语言编写,那么宏观上看上去就变成了C语言对硬件进行了操作,但用户编程的c语言程序是不可以直接对硬件进行操作的,必须调用操作系统提供的服务才可以对硬件进行操作,比如printf函数.