专业互联网培训机构——完成蜕变以后轻松拿高薪
电话+V: 152079-09430 ,欢迎咨询汇编代码可以被cpu直接运行吗为什么,[python实用课程],[C++单片机原理],[C#、PHP网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]
一、汇编语言是不能被计算机直接执行的语言吗
是的
汇编语言是不能被计算机直接执行的语言
汇编语言对应着不同的机器语言指令集,需要通过汇编过程转换成机器指令,计算机的机器指令是一列二进制数字.计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算,因此汇编语言程序不可以由计算机直接执行。
计算机语言可以分为高级语言、汇编语言和机器语言三种。其中,计算机能够直接识别和执行的是机器语言,它是用二进制代码表示的一种机器指令集合。
机器语言具有灵活、直接执行、速度快等特点,但不同型号的计算机其机器语言是不相通的。指令是机器语言的一条语句,它是一组有意义的二进制代码,其中操作码表示指令的操作性质和功能,地址码给出操作数或操作数的地址。
手工编程机器语言时,程序员必须处理每条指令和每一个数据的存储分配和输入输出,并且必须记住计算机的所有指令代码和代码的含义,这是一项非常乏味的工作。因此,除了计算机制造商的专业人员,绝大多数程序员已经停止学习机器语言。
二、cpu可以直接执行汇编语言吗
CPU不可以直接执行汇编语言,汇编语言虽然是低级语言但也是语言,CPU只认机器码,要编译成以后才可以运行。
基本简介:
关于编译代码你应该知道的|Linux中国
导读:用这个方便的捕鼠器比喻来理解编译代码。
本文字数:2772,阅读时长大约:4分钟
用这个方便的捕鼠器比喻来理解编译代码。
源代码必须要经过编译才能够运行程序,而对于开源软件,每个人都可以获取源代码。无论你是自己编写了代码,想要编译和运行它,还是下载了某人的项目来尝试它,了解如何通过编译器opensource.com处理源代码,以及编译器如何处理这些代码,这都很有用。
创建一个更好的捕鼠器
一般情况我们不会将一个捕鼠器比作电脑,但不管你信不信,它确实与你正在使用的设备(手机或电脑)的CPU有一些相似之处。经典的捕鼠器(我说的不是)有两种状态:打开或者释放。你可以认为打开是将捕鼠器设置好准备捕获老鼠,以及释放是捕鼠器被老鼠触发。某种意义上来说,捕鼠器就像是一台有鼠标的电脑。你可以想象一下这个代码,用一种虚构的语言来描述这个过程:
换句话说,你可以基于捕鼠器的状态发现是否有老鼠(数据)。当然,捕鼠器不是万无一失的,有可能有一只老鼠在捕鼠器旁边,由于老鼠还没有触发捕鼠器,所以它的状态还是打开的。因此该程序可以进行改进,这都是非常典型的。
开关
总的来说,捕鼠器就是一个开关。你会在家里使用开关打开灯。可以从开关中获得许多信息。比如,人们会从你家灯的状态了解到你是否在家。
你可以根据邻居家灯的状态来改变行为。如果邻居家所有的灯都熄灭了,那么请关掉你大声的音乐,因为人们可能已经上床睡觉了。
CPU也使用这样的逻辑,只不过乘以几个数量级,缩小到了微观级别。当CPU在特定寄存器上接收到电信号时,可以触发其他一些寄存器,然后触发另一个,以此类推。如果这些寄存器有特定的意义,那么就可以通信。也许激活同一主板上某处的芯片,或者使LED亮起,或者改变屏幕上的像素颜色。
种瓜得瓜,种豆得豆。如果你真的想在多个位置而不是仅限于一处发现老鼠,但是你只有一个捕鼠器,那你应该开发一个应用才行。使用网络摄像头和一些基本的图像识别软件,你可以建立空厨房的模型,然后扫描变化。当老鼠进入厨房,在原先没有老鼠的图像上会有像素的变化。记录下这些数据,如果有无人机可以追踪老鼠并捕获会更好,这样就可以将老鼠赶出厨房了。这时,你通过打开和关闭信号的魔法,创造了一个更好的捕鼠器。
编译器
代码编译器将人们可阅读的代码转换成CPU可以理解的机器语言。这是非常复杂的过程,因为CPU非常复杂(甚至比捕鼠器更加复杂),同时因为该过程比严格“需要”的更加灵活。并不是所有的编译器都很灵活。有一些编译器只有一个目标,它们只会处理特定格式的代码文件,处理过程也因此而简单明了。
幸运的是,现代的通用编译器并不简单。它们允许你编写不同语言的代码,也允许你用不同的方式链接库文件,并且可以生成运行在不同架构上的文件。GNU编译器集合opensource.com(GCC)的编译器会输出超过50行的选项,LLVM的编译器的输出超过1000行。GCC指导手册的字数超过10万。
当你在编译代码时会有很多选项。
当然,大多数人并不需要知道所有的选项。我从未读过GCC的手册页,因为它们是针对Objective-C、Fortran以及我从未听说过的芯片架构的。不过我重视它将代码编译为不同的架构——64位或者32位——的能力,以及在其他行业已经落后的计算机上运行开源软件的能力。
编译生命周期
同样重要的是,理解编译代码的不同阶段。这是一个简单的C语言程序的生命周期:
1.带有宏定义的C源代码文件,用预处理为文件。
2.扩展了宏定义的C源代码文件,会被转译成文件。
3.以汇编语言写的文本文件文件被汇编为目标文件。
4.带有CPU指令的二进制目标代码,以及其他目标文件和库文件,以内存区域无关的偏移量,使用链接以生成可执行文件。
5.最终的二进制文件要么包含所有需要的目标,要么设置以动态链接库文件加载。
你可以试试这个简单示例(可能需要对库路径做一些调整):
可获得的知识
计算机已经变得非常强大,并且用户友好。请不要走向这两种可能的极端中的任何一种:计算机不像捕鼠器和电灯开关那么简单,但它们也不是无法理解的。你可以了解编译代码、如何链接以及针对不同架构进行编译。一旦你知道了,你就可以更好地调试代码。你可以理解你下载的代码,甚至可以修复其中的一两个错误。同时从理论上来讲,你可以建造一个更好的捕鼠器,或者用捕鼠器造一个CPU。由你决定。
via:https://opensource.com/article/22/10/compiling-code
作者:AlanSmithee选题:lkxed译者:Donkey-Hao校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出
LCTT译者:Donkey
翻译:27.0篇
|
贡献:144天
2022-06-09
→
2022-10-31
https://linux.cn/lctt/Donkey-Hao
欢迎遵照CC-BY-SA协议规定转载,
我们将为您添加白名单,授权“转载文章时可以修改”。
【FUTURE PROGRAMMING COURSE】尊享对接老板
电话+V: 152079-09430
机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。