汇编语言可以对硬件直接进行操作是什么意思? C语言可以吗?
8个回答
展开全部
我不知道你说的是哪方面,如果是类似单片机的裸机程序就都可以,C语言一般只是替你做了一些默认处理,比如你定义一个变量,C语言编译器会根据是自动变量还是全局变量以及已经定义的变量内存位置来给该变量提供内存,如果是汇编根本就不存在定义变量,要你自己记住哪个内存是什么数据,或者把该地址做成一个宏代替变量。。。怎么使用寄存器,都是C语言认为的默认的方式,但不想使用默认方式就可以使用一些特殊关键字来告诉编译器使用哪个寄存器哪个地址存数据,但这些关键字都不是标准C语言定义的,是开发商扩展的。。。。
其实C语言目的就是简化的汇编,汇编可以做的C语言也行,实在觉得不爽,可以在C语言程序中加汇编。。。。
其实C语言目的就是简化的汇编,汇编可以做的C语言也行,实在觉得不爽,可以在C语言程序中加汇编。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接操作硬件的意思是直接读写硬件提供的寄存器,汇编自然不必说,in和out指令直接就能读写硬件端口,汇编直接对应机器语言。
再来说说c语言,c语言仅仅是提供了一套语法规则,他本身并没有提供什么额外的指令。我们常用的标准库-sdk中,并没有用于直接读写硬件端口的函数,实际上并不是c语言无法实现,而是与硬件交互的代码,我们通常让os去做,我们仅仅是需要数据而已,通过os拿到数据就可以了。
除开硬盘,显示器,键盘,socket这四个我们常见的io设备后,如果有新的设备加入到主机中,我们该怎么办,这个时候,如果没有设备驱动,你就可以用汇编写设备驱动代码(因为c没有直提供直接操作端口的api),然后拓展到c中即可。然后你就可以到更高级的c语言中去调用接口,获取数据了。
所以,如果你已经掌握了c语言的标准sdk库,那么这不是终点。c语言不是java,你可以用汇编去自主拓展c,而java对于大部分人来说,仅仅是在sdk上构建各种类库。所以说c语言的sdk不是终点,因为你可以自己拓展sdk-用汇编。那么再在c上构建各种程式库,也是可以的,这完全在于你的能力阶段。
再来说说c语言,c语言仅仅是提供了一套语法规则,他本身并没有提供什么额外的指令。我们常用的标准库-sdk中,并没有用于直接读写硬件端口的函数,实际上并不是c语言无法实现,而是与硬件交互的代码,我们通常让os去做,我们仅仅是需要数据而已,通过os拿到数据就可以了。
除开硬盘,显示器,键盘,socket这四个我们常见的io设备后,如果有新的设备加入到主机中,我们该怎么办,这个时候,如果没有设备驱动,你就可以用汇编写设备驱动代码(因为c没有直提供直接操作端口的api),然后拓展到c中即可。然后你就可以到更高级的c语言中去调用接口,获取数据了。
所以,如果你已经掌握了c语言的标准sdk库,那么这不是终点。c语言不是java,你可以用汇编去自主拓展c,而java对于大部分人来说,仅仅是在sdk上构建各种类库。所以说c语言的sdk不是终点,因为你可以自己拓展sdk-用汇编。那么再在c上构建各种程式库,也是可以的,这完全在于你的能力阶段。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
汇编语言可以说是和机器指令对应的,C语言大部分可以,但是有一些不行。C语言最终被编译器编译成汇编指令的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询