在了解CLR运行之前让我们先简单了解一下IL 除了编译器编译的IL代码,IL也是一种汇编语言,也就是说我们可以直接编写IL代码,当然也有对应的IL编译器,值得一提的是对于面向CLR的其他语言,CLR只开放了一部分功能,而IL可以访问CLR的全部功能. 前面一章我们介绍了CLR的所有初始工作,最后在调用Main入口方法的时候,CLR需要将程序集中的IL代码转为CPU指令,也就是CLR中JIT(just-in-time)编译器的职责,CLR会即时编译IL代码 即时编译:在运行的时候才会进行编译(类似…
FCL(Framework Class Library) Framework 类库: FCL是 .net Framework 包含的一组DLL程序集的统称,FCL包含了提供了很多功能,关于这一部分没有什么好说的,只需要了解大致你需要的功能由什么类提供以及类型在那个命名空间,接着在查询接口文档即可.以下是FCL常用的命名空间 CTS(Common Type System)公共类型系统CTS 是是微软制定的一套类的定义规则,如果存在与CTS不符合的定义或者功能则会出错,但是不使用则会通过CTS规范规…
这一节先简单的讨论一下程序集以及CLR的初始化 虽然对应的编译器会生成托管模块,但实际上CLR不与托管模块工作,编译器除了编译还有将生成的托管模块转换为程序集的功能,微软还提供了工具AL.exe(程序集链接器)手动生成程序集. 程序集: 1.是一个或者多个模块或者资源的分组,是安全性.重用.版本控制的最小单元. 2.程序集还有一个类似于懒加载的机制,将不常用的类或者资源放在一个单独的文件中,当使用时才会下载,可以节约磁盘和缩短安装时间 3.此外程序集还可以自描述,在CLR读取程序集时无需额外信息…
写这个纯粹是自己的一点学习总结,其实就学习的笔记整理,相当于对自己的一点督促,如有看到不正确的欢迎指出 一般我们写代码都是使用的高级语言,但是在CLR中运行的代码并不是我们直接写的代码,而是通过我们选择对应语言的编辑器生产的中间语言运行,所以一开始会介绍,在CLR运行之前,到底做了什么? 所有面向CLR的语言都可以在CLR中运行并编译,例如C#.F#,在代码在CLR运行之前,则先会选择对应的编译器进行编译,并生产中间语言(IL),所以实际运行的是中间语言,之所以CLR能实现多种语言兼容也是因为如…
第一章    第一个C#程序 ******************C#程序***************     ①:建立项目:文件-->新建-->项目-->c#-->控制台程序(项目名/文件存储位置)-->确定       ①:c#程序     namespace:命名空间:  相当于java中的package(声明包)     using:引用其他命名空间:相当于java中的import          注意!!但using只能写到包,不能写到类名 Main()方法:程…
第一章(初识Python)知识点归纳 Python是从ABC语言衍生而来的 ABC语言是Guido参与设计的一种教学语言,为非专业编程人员所开发的. Python是荷兰程序员 Guido Van Rossum于1991推出的,保留着ABC的很多功能,而且也融入了Modula-3语言的元素. Modula-3有着简单和安全的特点. Python命名的灵感来自BBC的喜剧<巨蟒剧团这飞翔的马戏团>,这门语言与蟒蛇没有直接的联系,虽然剧团的成员John Cleese最初命名时隐含着“阴险”.“虚伪”…
1.4程序开发过程 一,开发过程 1,分析问题,设计一种解决问题的途径(方案)★ 2,写出源代码 (*.c) 3,编译→(连接)   *.obj→(*.exe) 4,运行*.exe (可执行程序) 二,程序里的错误 ①语法错误(方法)根据错误提示去排错 ②逻辑错误 提示:{ ①从错误提示行向上查 { ②若有多个错误,先改第一个 三,编译器的提示 1,Error    错误 2,Warning    警告  (分析Warning的原因) 四,逻辑错误 1,读取非安全区域 2,进入死循环 3,非法除…
第一个C#程序 namespace 是C#中组织代码的方式,它的作用那个类似java中的包 using 在Java中作用如果导入其他包 应该是用import关键字而在C#中应使用using关键字来引用 class关键字 与java一样C#也是一门面向对象的得语言,使用class关键字来表示类 Main()方法与java一样是程序运行的入口应用程序从这里开始在C#中Main()的方法有四种返回值 语法 static void Main(string[]args){ } static int Mai…
-d是directory 目录的意思 cls:清楚doc里面的内容 ipconfig:显示网络配置信息 java -version:检查安装的jdk版本信息 是类型自动向上转换.  在输出时,根据当前变量的数据类型,决定内容的输出.,这个时候,是将字符A的ASCII码赋值给变量b  此时变量b管理的内存块是一个数字 ,  char b='a';此时变量b的内存中存放的是字符'a',所以读取的时候,也是'a'  强转是有高级类型向低级类型转换 根据数据类型的范围 大的数据类型转小的数据类型 强制转…
学习Flex&Bison目标, 读懂SQLite中SQL解析部分代码 Flex&Bison简介Flex做词法分析Bison做语法分析 第一个Flex程序, wc.fl, 单词计数程序 %{ int chars = 0; int words = 0; int lines = 0; %} %% [a-zA-Z]+ { words++; chars += strlen(yytext); } \n { chars++; lines++; } . { chars++; } %% main(int a…