当前位置:首页 » 编程软件 » 编译原理代码怎么看

编译原理代码怎么看

发布时间: 2022-05-21 12:12:20

⑴ 关于编译原理的问题

1.当然是机器语言了,如果是汇编指令,那还得编译一次!能运行的程序都是机器语言,只有机器语言才能控制CPU,NET或Java这些中间语言,程序在运行时会被CLR或JVM快速编译成机器语言,因此这些程序速度上有损失。

高级语言源代码(文本)-通过编译器(compiler)-程序(二进制机器语言)
汇编代码(文本)-通过汇编器(assembler)-程序(二进制语言)

看到这里,你可能会想那汇编语言到底有什么用呢,编译器完全能代替汇编啊?
(1).编译器是通过高级语言(c,c++)转到机器语言的。转换过的机器语言受限与高级语言,效率和功能上都有限制。比如c不等过分操作内存。但通过汇编器转化过来的机器语言,效率高,且用汇编语言,直接和CPU对话!
(2).汇编可以反汇编(逆向编译),而这里高级语言没有发言权,就是:
程序(二进制机器语言)-通过反汇编器(compiler)-可转化为汇编代码(文本)
但永远不能转化为高级语言的源代码,。
以上两点汇编存在的重要性。

2。当然是说移植源代码。windows用x86机器语言,苹果用powerPC机器语言,windows程序当然不能运行在苹果机上,因为程序其实就是一串机器语言!但windows上有c的编译器(vc++),苹果机上也有c编译器(gcc),因此同一个c的源代码,当然就可以通过不同平台的同一种编译器实现平台移植。

3.当然是NASM,我看的所有书都首先说NASM,他是开源的,就像Linux一样,很受欢迎,还有MASN是微软的,borland的也有汇编器,不过都不常见了。

4.这跟CPU有关,一般32位x86兼容的cpu有许多寄存器,多数是32位的,也有16位的。比如CS,ES,DS这些segment寄存器一直是16位的。

5.优势太多了,这和32位和16位存在的优势一样,16位电脑最大内存1MB,寄存器都是16位的。32位,最大内存可以有4GB,整整是16位的4096倍啊!16位多渺小啊,同理64位基本上也可以蔑视32位,64内存最大内存用TB来衡量,寄存器多数是64位!地址总线也是64位。64对32位没有什么优势劣势可言,64位完全就是32位的下一代。

⑵ 易语言的编译原理和中间代码是什么

基本特点
易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程序编写的大门。易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用API,COM、DLL、OCX组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具。易语言有自主开发的高质量编译器,中文源代码被直接编译为CPU指令,运行效率高,安全可信性高;拥有自己的数据库系统,且支持访问现有所有数据库;内置专用输入法,支持中文语句快速录入,完全解决了中文输入慢的问题;易语言除了支持界面设计的可视化,还支持程序流程的即时可视化;除了语句的中文化之外,易语言中还专门提供了适合中国国情的命令,如中文格式日期和时间处理、汉字发音处理、全半角字符处理、人民币金额的处理等;易语言综合采用了结构化、面向对象、组件、构架、集成化等多种先进技术,并在运行效率、性能价格比、全可视化支持、适应本地化需要、面向对象以及提供Windows,Linux上的运行平台等具有特色;现有各种支持库多达40多个,用户可以使用她来满足几乎所有的Windows编程需求,多媒体功能支持强大,完善的网络、端口通讯和互联网功能支持,网上与论坛上的学习资源众多。在易语言及其编译器的设计与实现、可视化汉语编程的构建、提供多种语言版本等方面具有创新。目前易语言已取得国家级鉴定,鉴定会专家一致认为:易语言在技术上居于国内领先地位,达到了当前同类产品的国际先进水平。
支持库
易语言支持库类似于普通的程序的DLL文件。
这个支持库是易语言专用的,别的程序调用不了的,扩展名有fnr、fne、npk三种。
fnr、fne都是制作好的DLL文件,例如系统核心支持库、应用接口支持库。该类支持库一般由用户使用C++或Delphi制作,具体可以看易语言支持库开发手册。
npk属于易语言COM包装支持库,该支持库是引用COM包装库生成的,例如WebBrowser、Windows媒体播放器。该扩展名格式支持库可用记事本、写字板打开。该支持库可以由用户制作,制作方法:在易语言上点击工具--“类型库或OCX组件→支持库”命令。

模块
大型软件项目的实施一般是分工协作开发,为了支持这一点,易语言提供了模块化开发支持。易语言中的模块称为易模块。通过使用易模块,用户可以将常用的代码封装起来重复使用到其它程序,或提供给第三方使用,或用作开发大型软件项目中的某个部分,然后在软件项目的封装阶段将所有这些模块组织编译成为一个完整程序,易模块的扩展名为.ec。同时易语言支持大量非官方扩展模块,用户可自行编译模块,易语言5.11静态编译版本发布!很多易语言本身不存在的功能,私人开发的模块基本会有,更多私人开发出具有特色功能出来,模块的使用使得易语言突显“易”字,大大增加了易语言的用户人群。

⑶ 如何查看一个用C++编出来的exe程序的源代码

除非开发人员把源代码给你看,否则是做不到的。

理由如下:

C是高级语言,而高级语言的编译的过程是,首先将高级语言转化成中间代码,然后再转化成汇编,最后用汇编器转化成相应的机器二进制码,也就是通常windows下的exe文件。由于汇编和机器码的可以说几乎是一一对应的,所以由exe反汇编成汇编代码是可行的,再进一步就不行了。因为高级语言在结构上就和汇编不一样,比如说递归调用,在汇编里肯定会转化为堆栈的非递归实现的。顺着翻译可以,逆翻译却是做不到的。
另外,高级语言自由度远比汇编高,一样的汇编代码完全可以用面貌全不相同的高级语言分别编译出来,所以高级语言和汇编代码并不是一一对应的。

有兴趣可以看一看编译原理的书籍。

如有疑问,欢迎追问。

⑷ C语言编译原理是什么

编译共分为四个阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。

1、预处理阶段:

主要工作是将头文件插入到所写的代码中,生成扩展名为“.i”的文件替换原来的扩展名为“.c”的文件,但是原来的文件仍然保留,只是执行过程中的实际文件发生了改变。(这里所说的替换并不是指原来的文件被删除)

2、汇编阶段:

插入汇编语言程序,将代码翻译成汇编语言。编译器首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器把代码翻译成汇编语言,同时将扩展名为“.i”的文件翻译成扩展名为“.s”的文件。

3、编译阶段:

将汇编语言翻译成机器语言指令,并将指令打包封存成可重定位目标程序的格式,将扩展名为“.s”的文件翻译成扩展名为“.o”的二进制文件。

4、链接阶段:

在示例代码中,改代码文件调用了标准库中printf函数。而printf函数的实际存储位置是一个单独编译的目标文件(编译的结果也是扩展名为“.o”的文件),所以此时主函数调用的时候,需要将该文件(即printf函数所在的编译文件)与hello world文件整合到一起,此时链接器就可以大显神通了,将两个文件合并后生成一个可执行目标文件。

⑸ 编译原理代码看不懂

你男的还是女的?

⑹ 怎样理解编译原理

如果你在学编译原理的话,你可以把它理解为一个编写《编译器》的时间课程~
当然,事实上,编译原理的老师也是这么要求的~
编译器就是把你编写的源程序代码变成程序可理解的二进制代码的过程。
而把这个过程细化之后就可以归纳为:1、预处理过程(例如去掉不需要的空格、注释之类的~)、2、词法分析(就是把你写的程序从头到尾扫描一遍,识别出你的程序中所有的“单词”,并编号记录,按顺序放在一张大的二维表中,一遍下一个处理过程用到~,当然,如果你的单词有错的话,还要做相应的出错处理哈~)、3、语法分析(处理的是第二部中得到的单词二维表,经过一定的算法处理,可以得到一张成为预测分析表的东东~简单的说就是按照预测分析表对一个个句子进行检查,全部通过就进入下一关节,否则出错处理)、4、语义分析、5、目标代码的生成(这部分生成基本的与机器无关的单步执行的代码)

之后的步骤就是与机器有关的东西了~目标代码优化>汇编代码生成>生成二进制代码~

恩,差不多就是这么个流程,你可以再去针对自己感兴趣的部分网络一下哈~

⑺ 编译原理如何由中间代码生成代码(不要代码,描述过程)

1、确定目标机器指令集
2、把每一个4元组翻译等效的目标指令代码块
3、根据数据表确定一些参数,组合成目标代码

⑻ 关于编译原理

可以自己写一个JPanel或者JComponent的子类,然后在子类中重写paint方法,在里面绘制背景图片。下面的部分是从我的代码里截出来的,不保证这样能用,只是给你个大体的丝路。学会了这个后自己重写组件就方便多了 public class ChessBoard extends JComponent{ private Image screen = null; public void paint(Graphics g) { if (screen != null) { g.drawImage(screen, (width - BOARDWIDTH) / 2, (height - BOARDHEIGHT) / 2, this); } else { screen = ChessBoard.this.createImage(BOARDWIDTH,BOARDHEIGHT); } } }

⑼ 编译原理

编译原理):利用编译程序从源语言编写的源程序产生目标程序的过程; 用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。

编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成

(9)编译原理代码怎么看扩展阅读:

编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。

编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。

而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。

热点内容
sql存储过程命令 发布:2025-05-16 13:17:54 浏览:145
用纸做解压小玩具西瓜 发布:2025-05-16 13:04:09 浏览:935
局域网xp无法访问win7 发布:2025-05-16 13:03:58 浏览:942
油卡如何修改密码 发布:2025-05-16 13:00:35 浏览:901
安卓手机如何拼照片 发布:2025-05-16 12:58:23 浏览:374
深入浅出python 发布:2025-05-16 12:56:52 浏览:655
国二c语言vc2010怎么编译运行 发布:2025-05-16 12:53:49 浏览:424
华为热点哪里看密码 发布:2025-05-16 12:53:44 浏览:515
新手如何用java写安卓app 发布:2025-05-16 12:53:07 浏览:402
虚荣挂脚本 发布:2025-05-16 12:50:44 浏览:480