![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编译原理
OneCode2World
这个作者很懒,什么都没留下…
展开
-
编译原理:文法和语言
首先,提出几个问题: 1.什么是文法?2.文法和语言有什么联系? 3.文法为语言的描述提供了哪些方便?下面,记录一下几个很经典的定义:1.使用文法作为工具,不仅为了严格地定义句子的结构,也是为了用适当条数的规则把语言的全部句子描述出来,可以说文法是以有穷的集合刻画无穷的集合的一个工具。(所以,可以看出,为什么引出文法? 引出文法,就是为了解决 语言的描述问题。根据文法可以产生句子,原创 2015-04-15 16:06:36 · 1730 阅读 · 0 评论 -
字节码的资料3:
深入理解JVM—字节码执行引擎(转)本文为转载,来自前面我们不止一次的提到,Java是一种跨平台的语言,为什么可以跨平台,因为我们编译的结果是中间代码—字节码,而不是机器码,那字节码在整个Java平台扮演着什么样的角色的呢?JDK1.2之前对应的结构图如下所示:从JDK1.2开始,迫于Java运行始终笔C++慢的压力,JVM的结构也慢慢发生了一些变化,JVM在某些场景下可以操作原创 2015-05-10 13:31:33 · 474 阅读 · 0 评论 -
JVM内存模型
深入理解JVM—JVM内存模型 2011-11-17 14:39:33| 分类: JVM | 标签:java 内存模型 jvm 虚拟机 内存溢出 |举报|字号 订阅 下载LOFTER客户端我们知道,计算机CPU和内存的交互是最频繁的,转载 2015-05-10 13:38:00 · 466 阅读 · 0 评论 -
编译程序和操作系统的关系
编译程序与操作系统的关系作者: keminlau 发布时间: 2010-08-31 16:49 阅读: 3255 次 推荐: 1 原文链接 [收藏] 和很多程序员一样,编译器到目前为止对我还存在一些让我迷惑的地方。比如编译器与操作系统的关系,编译器与CPU的关系,动态链接器从哪查找共享库等。让人困惑的原因有几,第一是编译器的功能角色特殊,编译器是生成程序的转载 2015-06-22 20:34:11 · 737 阅读 · 0 评论 -
:程序是怎样被链接和加载的?
个真实的例子我们通过一个简小的链接实例来结束对链接过程的介绍。图 3 所示为一对 C 语言源代码文件,m.c 中的主程序调用了一个名为 a 的例程,而调用了库例程 strlen 和 write 的 a 例程bbs.theithome.com在 a.c 中。--------------------------------------------------------------原创 2015-06-08 07:31:29 · 519 阅读 · 0 评论 -
编译器的工作过程
编译器的工作过程作者: 阮一峰日期: 2014年11月11日源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include stdio.h>int main(void){ fputs("Hello, world!\n", stdout); re转载 2015-06-08 07:50:36 · 291 阅读 · 0 评论 -
程序时如何被链接和加载的???
运行 PE 可执行文件启动一个 PE 可执行程序的过程是相对简单的。 读入文件的第一页,其中有 DOS 头部,PE 头部和区段头部等。 确定地址空间的目标区域是否有效,如果不可用则另分配一块区域。 根据各区段头部的信息,将文件中的所有区段映射到地址空间的适当位置上。 如果文件并没有被加载到它的目标地址中,则进行重定位。 遍历导入区段中的 DLL 列表,将任何未加载原创 2015-06-08 14:47:42 · 704 阅读 · 0 评论 -
加载与链接器的小知识
在多数现代系统中,每一个程序被加载到一个新的地址空间,这就意味着所有的程序都被加载到一个已知的固定地址,并可以从这个地址被链接。这种情况下,加载是颇为简单的: 从目标文件中读取足够的头部信息,找出需要多少地址空间。 分配地址空间,如果目标代码的格式具有独立的段,那么就将地址空间按独立的段划分。 将程序读入地址空间的段中。 将程序末尾的 bss 段空间填充为 0,原创 2015-06-10 07:56:09 · 575 阅读 · 0 评论 -
编译器是如何判断一个函数的结束的???程序
当程序调用一个方法时,程序控制就转到被调用的方法,当执行完return语句或执行到表示方法结束的右括号时,被调用方法将程序控制还给调用者。重点: 表示函数执行结束的:右括号 ‘’ } ‘’ ;原创 2015-07-03 21:01:17 · 793 阅读 · 0 评论 -
编译原理-----动态多态性的实现
编译系统为每个包含虚函数的类包括它的子类都创建一个虚函数表,称为vftable,这是一个指针数组,存放每个虚函数的人口地址,供该类的所有对象共享。在每个类对象中放置称为vfptr的虚表指针,指向所属类的虚函数表。当通过指针调用虚函数时,编译器通过啷订,在其所指的虚函数表中查找函数入口地址,从而实现动态多态性原创 2015-07-16 06:50:07 · 885 阅读 · 0 评论 -
从编译原理的角度理解面向对象----0
(我个人的理解)从编译原理的角度看:类和对象我应该这样理解:每一个类,都是一段代码。每一个对象,都是一个内存和命令。如果 采用动态链接库的角度来看,可以这样:每一个对象,都是共享一个类。调用对象的方法其本质是调用的是类的方法。我们把编译器把内存条,划分出一个不同的区域。每个区域用于不同的用途。有用来存储类代码的。也有用来存储对象的相关属性的区域。对象原创 2015-07-15 19:18:49 · 1397 阅读 · 0 评论 -
问题篇:什么是bitycode即位元码?
1.什么是位元码?? 位元码有什么作用???2.为什么会出现位元码??? 位元码是为了解决什么问题而提出来的??? 3. "位元码(bytecode)是一个程序处理的电脑目标代码(object code),通常指虚拟机(virtual machine)而不是真的电脑机或硬件处理器(processor)。虚拟机将一般的机器指令(instruction)转变成专用机器指令或是这个电原创 2015-05-10 13:10:24 · 606 阅读 · 0 评论 -
编译原理:理论记忆强化篇
第一部分:第十三章:编译程序的构造1.为特定的源语言和目标机环境书写编译程序,是目前常用的编译程序构造途径,尤其是对编译程序的执行效率以及目标机代码的质量要求较高的应用环境。2.如果一个编译程序是用高级语言或编译程序的构造工具开发的,那么它的各种性能将会大大提高。3.原创 2015-05-10 17:01:31 · 657 阅读 · 0 评论 -
交叉编译资料1
什么是交叉编译?为什么要使用交叉编译? .2012-02-03 0 个评论 收藏 我要投稿在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Archi转载 2015-05-08 22:09:13 · 348 阅读 · 0 评论 -
操作系统执行可执行文件时的内存分配
面试知识点-- 操作系统执行可执行程序时,内存分配是怎样的?2013-09-20 21:49 1984人阅读 评论(0) 收藏 举报可执行程序的内存分布GNU编译器生成的目标文件默认格式为elf(executive linked file)格式,这是Linux系统所采用的可执行链接文件的通用文件格式。elf格式由若干个段(section)组成,由转载 2015-05-08 22:05:02 · 737 阅读 · 0 评论 -
编译笔记:编译程序的组成
编译程序可以分解为:传统的 编译程序可以分解为:1.词法分析 模块2.语义分析模块3.静态语义检查模块4.语义处理及代码生成模块5.符号表处理模块原创 2015-05-10 13:06:06 · 582 阅读 · 0 评论 -
Java字节相关资料
深入理解JVM—字节码文件子系统 2012-03-20 15:48:42| 分类: JVM | 标签:jvm 字节码 子系统 深入理解 class |举报|字号 订阅 下载LOFTER客户端 我们在前面的几篇文章已经提到过很多次转载 2015-05-10 13:36:06 · 392 阅读 · 0 评论 -
问题篇: 有关“宏”的问题???
问题:1.什么是宏??? C语言是如何处理宏的??? 编译程序是如何处理宏的??? 2.宏有哪些作用???? 我们如何使用和定义宏??? 使用宏的机制是什么???原创 2015-05-10 13:02:28 · 321 阅读 · 0 评论 -
有关位元码的资料1:
实现 Java 平台的三种方式 出处:csdn.net[ 2005-01-24 10:04:36 ] 作者:蔡学镛 责任编辑:liyalin 广泛地说,只要能执行 Java bytecode 者,就可以称为 Java 平台(Java platform)。大致上,实现 Java 平台的方式有三种,分别是: Java 虚拟机器(Java Virtual转载 2015-05-10 13:22:46 · 537 阅读 · 0 评论 -
字节码资料2:
深入字节码 -- 使用 ASM 实现 AOP发表于2年前(2013-09-20 18:44) 阅读(6670) | 评论(31) 210人收藏此文章, 我要收藏赞115月23日 西安 OSC 源创会开始报名啦,存储、虚拟机、Docker 等干货分享ASM AOP 拦截器 字节码 AOP 的概念已经不是什么新鲜事物,所以我在这里就转载 2015-05-10 13:24:11 · 560 阅读 · 0 评论 -
Java字节码资料4
Java字节码(.class文件)格式详解(一)小介:去年在读《深入解析JVM》的时候写的,记得当时还想着用自己的代码解析字节码的,最后只完成了一部分。现在都不知道还有没有保留着,貌似Apache有现成的BCEL工程可以做这件事。当时也只是为了学习。这份资料主要参考《深入解析JVM》和《Java虚拟机规范》貌似是1.2版本的,整理出来的。里面包含了一些自己的理解和用实际代码的测试。有兴趣的转载 2015-05-10 13:39:31 · 452 阅读 · 0 评论 -
面向对象语言的编译=====
面向对象语言的编译:1.对象有自己的存放属性的存储单元,同一类的对象可以共享方法的代码。2.如果类B继承类A并且重写了方法m,那么对类B的对象b来说,即使他作为类A的对象使用也必须使用在类B中定义的方法。3.动态绑定规则:当对象0的一个方法可能被子类重新定义时,如果编译器不能确定0的运行时类型,那么必须对该方法进行动态绑定。4.如原创 2015-07-15 19:57:58 · 1325 阅读 · 0 评论