书栈网 · BookStack 本次搜索耗时 0.020 秒,为您找到 39 个相关结果.
  • 3.4 数据运算命令

    3.4 数据运算命令 3.4 数据运算命令 add / sub / mul / div / mod / cmpeq / cmpne / cmpgt / cmplt / cmpge / cmple / and / or / not / neg 命令,包括算术、比较和逻辑运算命令。对应于 TinyC 中的以下运算符: +, -, *, /...
  • 3.1 Pcode 、 Pcode 虚拟机及 Pcode 模拟器概述

    3.1 Pcode 、 Pcode 虚拟机及 Pcode 模拟器概述 3.1 Pcode 、 Pcode 虚拟机及 Pcode 模拟器概述 Pcode 是 TinyC 编译器的中间代码,是本人参考 pascal 编译器的中间代码 pcode 、并结合逆波兰表达式(后缀表达式)的逻辑后,设计出的一种非常简单的、基于栈和符号表的虚拟代码。 Pcode ...
  • 条件编译/跨平台编译

    条件编译 源文件后缀名 $if条件编译 跨平台交叉编译 内置全局变量 条件编译 目前主要针对不同平台,实现条件编译 按照作者的说法,为了保持V的简单,不会加入预处理,但是支持条件编译 目前的条件编译有2种主要方式: 1.根据源文件名后缀来实现条件编译 2.根据代码中的$if来实现条件编译 源文件后缀名 源文件后缀包含了2个维度...
  • 8.1 flex 简介

    8.1 flex 简介 8.1 flex 简介 flex 是一个快速词法分析生成器,它可以将用户用正则表达式写的分词匹配模式构造成一个有限状态自动机(一个C函数),目前很多编译器都采用它来生成词法分析器。flex 的主页:http://flex.sourceforge.net/ 。下面以两个简单的例子来说明 flex 的使用方法。 首先安装 f...
  • 15.5 翻译 Pcode 中的自定义函数命令和变量声明命令

    15.5 翻译 Pcode 中的自定义函数命令和变量声明命令 15.5 翻译 Pcode 中的自定义函数命令和变量声明命令 上一节我们已经实现了将简单 TinyC 语句手工翻译成 Pcode ,然后编写了 NASM 宏将这些 Pcode 翻译成 x86 指令,最后汇编、链接成可执行程序。我们已经编写了大部分 Pcode 命令所对应的宏,本节将编写 N...
  • 6.2 编译器的工作流程

    6.2 编译器的工作流程 6.2 编译器的工作流程 先让我们回忆一下我们在上一章中是如何手工将源程序翻译成中间代码的,想一想翻译的第一步是什么?第一步是我们的人脑要理解源程序,理解源程序的结构,理解源程序的含义、作用,然后才能根据我们的理解进行翻译。 要让计算机将源程序翻译成目标程序,我们也要让计算机真正的理解源程序,让计算机分析出源程序的结构,将...
  • 13.3 bison 示例 2

    13.3 bison 示例 2 13.3 bison 示例 2 再来看一个稍微复杂一点的示例,一共有 4 个文件: 词法分析文件: scanner.l %{ #define YYSTYPE char * #include "y.tab.h" int cur_line = 1 ; void yyerror ( co...
  • 7.2 直接扫描法

    7.2 直接扫描法 7.2 直接扫描法 直接扫描法的思路非常简单,每轮扫描,根据第一个字符判断属于哪种类型的 token ,然后采取不同的策略扫描出一个完整的 token ,再接着进行下一轮扫描。例如 TinyC 中,若仅考虑一些简单的情况,按 token 的第一个字符,可以将所有类别的 token 分为以下 7 大类: (1)A型单字符运算符 ...
  • 更新日志

    v2.3.1 新特性 改进 Bugs修复 v2.2.9 新特性 改进 Bugs修复 v2.2.8 新特性 改进 Bugs修复 v2.2.7 新特性 改进 v2.2.6 新特性 改进 Bugs修复 v2.2.5 新特性 改进 Bugs修复 v2.2.3 新特性 改进 Bugs修复 v2.2.2 新特性 改...