浅谈计算机语言层级(转载:http://a1pass.blog.163.com/ A1Pass)

计算机系统层次结构 我们从计算机语言角度出发,把计算机系统划分成多级层次结构,每一层以一种语言为特征,如图所示: L1:微程序机器级  这一级的机器语言是微指令集,使用者是计算机硬件的设计人员,编写的微程序可以直接由计算机硬件/固件解释来实现 L2:传统机器级 这一级的机器语言就是传统的机器指令集。程序员用该指令集编写的程序由L1级以上的微程序进行解释执行。由微程序解释指令集又叫做仿真。实际上,在L1上可 阅读详情

        以下内容为转载,非本人原创。

        版权http://a1pass.blog.163.com/  A1Pass

        计算机发展到现在已经衍生出了各种兴新经济,并应用到了各个领域,计算机语言也正变得日臻成熟。到了今天,可供我们使用的计算机语言多达上百种,虽然这些语言中的很大部分只能应用到极个别的环境中,但是我们平时可以使用的仍然可以达到几十种。

       那么,我们是否清楚这些语言都是什么,或者说我们是否清楚他们都适合做什么?很显然的,你如果使用JAVA写操作系统是不可能的,同样的,如果你想使用汇编写一个大型商业软件一样是不可能的。因此,A1Pass将通过这篇文章为一些入门不久的朋友讲述计算机语言究竟为何物,并以更深的层次阐明语言之间的不同。

       在讲解之初,我首先要声明的就是,任何计算机语言的存在都有其道理,不分优劣。它们根据应用环境的不同而各自有不同的优异表现,因此请各位读者抱着一个健康的心态阅读本文。

       要讲解计算机语言,当然就要从2进制码开始,我们都知道计算机使用0、1来代表高低电平,从而处理数据。但是很明显我们无法有效的维护这些以0、1构成的计算机语言,因此我们需要将其翻译成更利于人类阅读的语言,当我们维护完成时再将其转化为由0、1构成的计算机语言,这样就可以大大提高我们的效率。

        因此人们提出了两种翻译方案,既解释方式与翻译方式:

解释方式:我们可以将人类编写的代码解释给CPU执行。请注意,这里的解释是指动态进行的,也就是说只要有这个环境,那么我们的代码就可以直接被执行,中间的解释程序负责动态的将我们的每一条指令解释为当前系统状态下CPU可执行的机器码。这种方式有一种好处就是平台无关性,我们只要写出程序代码,那么它在任何的操作系统中、任何的环境中都可以执行,当然代价就是极低的效率……

       翻译方式:我们可以通过编译程序直接将我们的代码翻译成当前系统环境下CPU可执行的机器码,下次只需要执行这些翻译完成后的机器代码即可。这种方式的好处是非常高的执行效率,因为我们最终生成的程序与直接用0、1写的程序并没有太大的区别。但是这种方式的缺点就是可移植性很差,很显然你不能把在Windows系统下编译连接成的EXE文件拿到Linux系统中去执行。

        那么我们究竟要选择哪种方式呢?这是一个没有绝对错误选项的答案,所以我们现在既能使用汇编、又能使用JAVA。

        然而具体来讲,我们现阶段的计算机语言大致可以分为6层,越是底层的语言越难学习、需要考虑的细节越多、同样维护性越差、掌握的人越少,越是高层的语言越容易学习、维护性越好、掌握的人越多、同样执行效率越低。

第一层:二进制机器码

        也就是我们所说的以0、1状态存在的纯机器码,但是请注意,这与我们平时所理解的机器码可能并不是这一层的。因为我们平时所能接触到的机器码全部都是传递给CPU的,而这里的机器码则是指CPU执行的,这两种机器码是截然不同的。CPU可执行的机器码是将传入CPU的机器码进一步分解处理后的结果。例如我们传递给CPU一条做加1的机器码,这条机器码在进入CPU后需要进一步的处理,然后才能得到CPU能真正执行的机器码,也就是我们这里的二进制机器码。
       这个层次的机器码显然不是我们能控制的,由于这里会涉及到物理、数学等众多领域,能掌握它的人就算是在处理器厂商内部都是少之又少,因为这首先对于处理器的厂商来说可是商业机密,其次就是它确实是太复杂了……

第二层:微指令
       微指令对于外人来说是一个猜想,它同样属于商业机密,它与上一层所讲的二进制机器码之间的关系,就犹如我们的汇编语言与平时所接触的机器码之间的对应关系一样。在一条加1的机器指令传递给CPU之后,可能会产生3-4条微指令才会真正加以运算。
       对于运行速度,微指令与上一层的二进制机器码并没有太大区别,但是其可维护性肯定是大幅度提高了。
       正是由于微指令的不确定性,因此某些书籍上认为微指令就是处理器的最后一层,对于这点我有些疑问,而且很明显两种存在方式在产品上并不会太多的体现出来,因为微指令本就是二进制码、或是二进制码的别名。
       不过值得注意的是近期已经发现了修改微指令的方法,并正试图以此留一个很邪恶的后门……

第三层:机器语言
       机器语言的本质就是芯片制造商固化在处理器中的也是指令集结构,这些结构负责执行例如值的拷贝或移动与算数预算等任务。这也是我们现今能控制的最小单位的计算机指令,然而就是这样的指令,在真正被执行前也是要被分解为很多条微指令的。

第四层:操作系统
       在提及语言层次关系时很少有人会提及操作系统,一盘情况下在探讨平台相关性时才会顺便带上它。但是事实上操作系统是构成计算机语言层次中必不可少的一环,我们平时可以使用的计算机语言编译出来的程序理论上讲都是属于“解释方式”执行的,只有操作系统才是“编译方式”执行的。这听起来可能有些不可思议,但事实就是如此,你如果把Windows下的PE文件直接拿给CPU执行的话肯定是过不去的,因为我们的程序必须经过操作系统的动态解析、并加载到内存后才会引导CPU去执行相关代码。
       因此,我们也可以将操作系统理解为将程序解释为在第三层上可以顺利执行代码的虚拟机,这个虚拟机使我们编程时不用去考虑很多计算机语言与硬件的交互细节,而将更多的精力放在程序逻辑上。当然,由此引起的速度问题肯定是巨大的,好在我们现今的个人PC硬件正在以梦幻般的速度发展,这些硬件足以承担起这笔本来很大的开销。
 

第五层:汇编语言
       汇编语言被认为是理解操作系统运行原理的敲门砖,这虽然有些夸张,但也不无道理。最起码的,使用汇编语言时我们所面对的是一个相对真实的内存、CPU环境,这自然就需要我们考虑很多的细节问题,并自己保证数据的准确性,汇编语言不会检查这块内存区域中保存的数据是什么类型,它的任务仅限于保证准确无误的执行你交给它的指令。
       但是即便如此,我们所接触的汇编语言仍旧是基于特定操作系统的,除非你使用它在开发操作系统。

 

第六层:高级语言
       理论上讲高级语言包括C、C++、JAVA等,但是我觉得只有翻译型语言才能背分配到这一层,因为我们可以简单的将翻译型高级语言想象为对汇编语言的一种封装,通过翻译型的高级语言可以直接被解释成为汇编语言,但是很显然解释型语言是不可能的。解释型语言生成的代码永远只有相应的虚拟机(翻译器)才能识别,然后才能将其转换为CPU可识别的指令。


       通过以上的解释,相信各位读者应该理解计算机语言之间的逻辑关系了,也应该明白我们电脑中的CPU肩负了多么重的担子了。从第三层开始,估计每提高一层其执行效率就会下降几倍。

       因此如果各位想写比较精巧的程序,还是推荐使用低级语言。

LWIP协议栈在STM32H7上的内存优化实战:如何用32KB RAM实现稳定千兆以太网通信 本文深入探讨了在STM32H7微控制器上,如何通过内存优化策略,在仅32KB的D2 SRAM中稳定运行LWIP协议栈以实现千兆以太网通信。文章详细分析了STM32H7的内存架构、LWIP的内存消耗瓶颈,并提供了从描述符表与PBUF池精确分配、链接脚本修改到MPU区域划分的一整套实战优化方案,旨在解决大数据量传输卡死等常见配置问题。 阅读详情

相关推荐

Web渗/透/攻/击实战(1)—成功渗/透台湾某净化设备公司官网

写在前面 作为一个防御型白帽黑客​ 你一定要知道黑客的进攻套路 才能有相应的防御措施 声明:只做测试,发现对方的漏洞,并不进行破坏性操作 1、 网站分析 地址:http://www.xxx.com.tw/ 这是一家中国台湾地区的网站,看着满屏的繁体字,就不是很舒服 网站首页包括:关于我们、资料下载、联络方式等等。 这些对我们进行sql注入用处并不大 我们需要的是可以进行参数传入的页面,这样我们就可以在参数里做文章 找一下 有没有新闻列表相关的页面 页...

请大家直接把问题写在评论区或留言,不要只说一句"你好 或 在吗",我会尽快回复的。 1771

计算机组成原理——计算机层次结构、语言层次

1级:微程序机器层。这是一个实在的硬件层,它由机器硬件直接执行微指令。 第2级:传统机器语言层。它也是一个实际的机器层,由微程序解释机器指令系统。 第3层:操作系统层。它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释软件指令,所以这一层也称为混合层。 第4层:编译语言层。它是为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。 第5层:高级语言层。它是面向用户的,是为了方便用户编写应用程序而设置..

weixin_46351593的博客 2598

基于PyTorch框架的CNN深度学习遥感图像滑坡识别系统源码及数据集

本项学术研究采用卷积神经网络架构,结合PyTorch深度学习框架,构建了针对遥感影像中滑坡地质灾害的智能识别系统。该项目作为经过高校导师专业指导的课程设计成果,在期末考核中获得了97分的优异成绩。整套资料包含完整的技术实现代码、经过标注的遥感图像数据集以及预训练好的高精度识别模型。该系统利用深度卷积网络对多光谱遥感影像进行特征提取,通过多层非线性变换实现滑坡区域的精准识别。技术方案采用编码器-解码器结构,在保持空间分辨率的同时增强特征表达能力。数据集包含多种地形条件下的滑坡样本,涵盖不同季节、光照条件和拍摄角度的遥感图像,确保模型具有较强的泛化能力。项目文件组织规范,配置说明详尽,具备开箱即用的便利性。用户只需按照指引配置运行环境,即可复现全部实验过程。代码结构清晰,包含数据预处理、模型训练、性能评估和预测推理等完整模块,每个功能模块都配有详细的注释说明。该研究成果不仅展示了深度学习技术在地质灾害监测领域的应用潜力,更为相关专业的课程设计和科研实践提供了可靠的技术参考。整套方案经过严格测试,运行稳定,结果可复现,适合作为计算机视觉与地理信息科学交叉学科的教学案例。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

计算机的层次与编程语言

文中介绍了计算机的层次及每层使用的语言,也分析了程序翻译和程序解释的区别

程序员小十一的博客 852

转载]冰血大哥的一篇学习计划

http://a1pass.blog.163.com/blog/static/2971373220077681231601/题记:变态计划一篇,大家可以参考一下。精通:能独立完成大中型程序单一模块的开发或有开发经验(就是我们通常说的开发过东西)熟练:能独立完成实现一定功能的小型程序的编程工作(就是我们通常说的能用该语言编程)掌握:能独立完成简单程序编写并能修改已知代码为自己所用(通常说的能对程序做二次修改)了解:能独立完成程序代码的执行流程和漏洞的分析(就是我们通常说的能看得懂代码)选用教材:即是推荐的自学

a1234567mdy的专栏 648

计算机语言层次使用计算机,计算机基础:3、计算机层次与编程语言

程序翻译由高级语言编写一段逻辑代码,经过编译器生成逻辑等价的低级语言,而计算机则执行该段低级语言的逻辑。由高级语言转换成低级语言的过程就称为程序翻译,生成低级语言的工具称为编译器翻译型语言:C/C++、Object-C、Golang程序解释高级语言的每一句代码都会通过由低级语言编写的解释器转换成对应的一句低级语言来进行执行解释性语言:Python、PHP、javascript翻译+解释型语言计算机...

weixin_31992237的博客 239

计算机语言分类

计算机语言分类: 根据面向的对象不同分为两类: 低级语言:面向机器的计算机语言。机器语言、汇编语言和符号语言 高级语言:面向人类的计算机语言,在执行之前需要转换为机器语言。C、C++、C#、Java、Python等 根据翻译类型不同分为两类: 解释型语言:源代码先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript/Perl/Shell等都是解释型语言。 编译型语言:源代码先编译成机器码,再由计算机进行运行。运行时不

weixin_47248721的博客 5580

A1pass大大对黑客学习的建议

本文转自:http://bbs.hackav.com/thread-92-1-1.html  菜鸟不可怕,可怕的是你认为自己一辈子都是菜鸟。每个高手都是从菜鸟进化过来的,就算是现在黑客界的泰斗们当年也无知过、轻狂过,但是这并不影响他们成为国内黑客界的泰斗。究其原因,就是因为他们勤奋好学,不管是多么的坎坷,他们坚持了下来,他们用了近10年的时间才取得今天得出成就。      由此可见,只要你认学、善...

weixin_33709609的博客 244

windbg调试心得

题记:积点滴之水,纵难成沧海,亦能得一洼。 作者:A1Pass [www.hackav.com / a1pass.blog.163.com](转载请注明版权)        有些朋友建议我多写一些心得与笔记,也好便于其他人学习进步,其实这些朋友高看我了,我的心得也是很有限的,简单的东西不成系统,复杂的东西一句两句的也说不清楚,抖出来有装X之嫌。我之所以最近几年少

wowolook的专栏 1225

你了解计算机系统的层次结构吗?计算机语言怎么发展的?

目录阶段一:机器语言阶段二:汇编语言阶段三:高级语言后续发展 阶段一:机器语言 早期的计算机只有机器语言(用0、1代码表示的语言),用户必须使用二进制代码(0、1)来编写程序,即机器语言程序 缺点:要求程序员对计算机硬件及其指令系统十分熟悉,编写难度十分大,操作过程容易失误 优点:编写的机器语言程序可以直接再及其上运行 阶段二:汇编语言 20世纪50年代开始出现了用助记符编写的语言——汇编语言 优点:不再用繁杂易错的二进制代码来编写程序 缺点: 机器不能直接识别汇编语言程序,

欢迎来到 Baret-H 的博客 2440

003 德国注入工具(A1Pass汉化加强版)

我的一篇日记[05.11.10] 2007-08-02 08:01:50| 分类: 网文九尾狐——随 | 标签:人生 快乐 评论 热点 中学生 我 随笔 |举报|字号 订阅 今天,可以说对我有些特别,因为在这一天里,使我意识到了许多事…… 记得在哪里看过一句话:“人的成长不在于你多少岁,而在于你经历了多少人生的转折。” 人为何而死?孔子曰:“未知生,焉知死也?”那好,人为何而...

hackdoors的博客 443

免杀原理及方法 (灰鸽子免杀方法) 及最新免杀教程下载

一: 灰鸽子免杀方法大全 在所有的版本中,黑防的鸽子算是比较好做免杀的了,今天在这里,我就用他做案例 一,最经典的OD一半一半定位法 我们把整个黑色标记的区域看成是没有修改的***代码把它从中间切平均分成两半,把其中的一半用nop 填充掉,再用瑞星杀内存,如果杀掉了就说明特征代码在我们没有nop 掉的一半,没有杀到就说明我们刚刚nop的一半中含有特征代码。 所演示的...

weixin_34377919的博客 1181

计算机程序设计语言的层次

计算机程序设计语言的层次

听海边涛声 285

网安免杀技术、加壳、加密、免杀方法(入门资料)

每种类型的恶意软件都采用不同的反检测技术,包括病毒、木马、僵尸程序、流氓软件、勒索软件、广告程序等。本文将重点介绍在stager阶段使用的meterpreter这种有效载荷的工具,因为几乎所有恶意软件的攻击命令执行都依赖于meterpreter。例如提权、凭证窃取、进程迁移、注册表操作等。Metasploit Framework作为一个漏洞利用和测试平台,集成了多种平台上的溢出漏洞和流行的shellcode,并持续更新,使得缓冲区溢出测试变得方便简单。

白帽黑客鹏哥的博客 2116

【黑客免杀攻防】读书笔记16 - 脱壳技术

1、寻找OEP 想要比较快速精准地寻找OEP,要熟悉不同语言、不同编译器的OEP特征。 1.1、利用内存断点 通过在.text段设断点的方式来找出是哪段代码正在操作此区段中的数据。一般情况下壳的Stub部分与宿主程序的代码段往往不在一个区段中,因此当我们在Stub部分所在的区段中发现了指向宿主程序代码段的跨段跳转时,就代表我们已经找到OEP处了。 实践脱壳:A1Pack Base壳 De...

weixin_30929295的博客 385

计算机底层:计算机层次结构(高级语言到低级语言的简单概述)

​ 计算机底层:计算机层次结构(高级语言到低级语言的简单概述): 助记符: 机器语言的操作码:000001=汇编语言的:LOAD,此时LOAD就是助记符。就是将复杂难记的二进制,定义成一个简单易记的字符或字符串。 编译型语言和解释型语言的粗略解释: ​

srhqwe的博客 1848

编程语言和计算机系统层次

语言处理系统包括:各种语言处理程序(如编译、汇编、链接)、运行时系统(如库函数、调试、优化等功能)操作系统包括人机交互界面、提供服务功能的内核例程。...

weixin_39656575的博客 1764

(三)编程语言和计算机系统的层次

早期计算机系统的层次 最早的计算机用机器语言编程 机器语言称为第一代程序设计语言 应用程序 指令集体系结构 计算机硬件 后来用汇编语言语言编程 汇编语言称为第二代程序设计语言 应用程序 汇编程序 操作系统 指令集体系结构 计算机硬件 【汇编语言程序编程需要界面,操作系统为其提供】 现代计算机用高级语言编程 第三代程序设计语言(3GL)为过程式语言,编码时需要描述实现过程,即“如何做”。 第四代程序...

CarmenIsOK的博客 8546

计算机语言层次使用计算机,【整理】计算机语言的不同应用层次

计算机语言,有很多。常见的一些是CC++C#(读作“C sharp”,也有读作“C 井”的)Java等等。此处,大概说说,各自的,在应用层次方面的区别;先说应用层次,也是可以说成是,应用领域。先简单说就是,不同的语言,有各自特点,决定了,在某些应用领域,应用层次方面,更适合用某种语言。换言之:即使同一个应用领域,也可以用多种语言,实现同样的功能。简言之:多种语言,可能都可以干某个事情,只是很多时候...

weixin_35779370的博客 450

C#语言的几个层次()

接到一位前不久C#培训学员的来信,这位学员虽然以前功底欠缺,但学习劲头很足,在培训中成长很快。即便基本吃透《.NET框架(修订版)》还嫌不够过瘾,一心要成为高手中的高手。来信的目的是希望我来指点进阶方向。说实话,我一般不想在这些有关个人发展的大是大非的问题上给人指导,因为太多亲身或眼见的经历告诉我人生实在是很难捉摸,善良、智慧、勤奋这些我们珍视的品格常常会碰到可怕的现实。我感觉我鼓励一个人的时候,

classperson的专栏 648
上一篇: 实验吧 简单的SQL注入2攻击笔记
下一篇: python3安装requests的问题-unable to creat process using '""'(Windows7环境)
JimGordonXu
博客等级 码龄9年 1粉丝 7原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值