自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 编译原理 C-Minus 代码生成(Flex / Bison)

C-Minus 源代码 代码生成文章目录C-Minus 源代码 代码生成一、实现目标二、实现过程(一)内容综述(二)代码分析1. 中间代码的表示2. 中间代码生成与优化3. 目标代码生成jieguofenxi一、实现目标  在前几篇文章中,我们已经实现了 C-Minus 语法的词法分析、语法分析及语义分析,这次我们将编写一个程序对使用类C语言书写的源代码翻译为中间代码/目标代码,并打印翻译结果。  程序要能够检查源代码中可能包含的词法错误:(1)最低要求2.1: 能够输出抽象语法树及四元式的中间

2022-01-02 15:51:29 2224 1

原创 编译原理 C-Minus 语义分析(Flex / Bison)

C-Minus 源代码 语义分析文章目录C-Minus 源代码 语义分析一、实现目标二、实现过程内容综述1. 语法分析树实现2. 符号表实现2.1 变量符号表2.2 函数符号表实现2.3 数组符号表实现2.4 结构体符号表实现3. Flex/Bison代码分析3.1 错误类型13.2 错误类型2、33.3 错误类型4、5、133.4 错误类型63.5 错误类型73.6 错误类型83.7 错误类型9、103.8 错误类型113.9 错误类型12三、结果分析验证四、心得与体会五、全部代码syntax_tree

2021-12-23 00:17:22 3067 3

原创 编译原理 C-Minus 语法分析(Flex / Bison)

C-Minus 源代码 语法分析文章目录C-Minus 源代码 语法分析一、实现目标二、实现过程1. 综述一、实现目标  在上一篇文章(C-Minus词法分析)中,我们实现了对C-Minus语言(C语言子集)书写的源代码进行词法分析,并打印分析结果;关于C-Minus语法的详细内容请参考上篇文章。而在本篇文章中,我们将运用语法分析相关知识,编写一个程序对使用类C语言书写的源代码进行语法分析,并打印分析结果。  至少实现最低要求:输出语法分析树,并能定位错误信息。  实现方式:可以选择手工编写(递归

2021-12-19 01:19:46 4830 6

原创 x86 - 描述符详解:存储/系统段描述符、门描述符

本文内容:一、概念介绍 字段和标志位二、不同的描述符 1、 存储段描述符数据段描述符代码段描述符 2、 系统段描述符GDT、LDT、TSS、TCB概念介绍LDT段描述符TSS段描述符 3、 门描述符不同的门类型门描述符与段描述符:短调用与长调用不同的门描述符详解调用门描述符任务门描述符中断门描述符陷阱门描述符处理器在实施任务切换时的操作三、参考资料一、概念介绍  段描述符是GDT、LDT、IDT表中(关于三个表的介绍-系统地址寄存器)的一个数据结构项,用于向处理器提供有关一个段的位置和大小信息以及访问控

2021-12-12 13:21:51 2751

原创 x86 - 操作系统:中断、陷阱、异常、故障、终止

本文内容:广义分类狭义分类(x86分类)概念 广义的中断概念硬件中断软中断BIOS中断 广义的陷阱概念 优先级 外部中断/中断(Interrupt)非屏蔽中断可屏蔽中断可编程中断控制器8259A高级可编程中断控制器(APIC) 内部中断/异常(Exception) 中断向量表 / 中断描述符表中断程序执行方式 向量中断 非向量中断实模式 - 中断向量表 IVT保护模式 - 中断描述符表 IDT 通过不同的门进行处理中断和异常处理程序的保护 权限检查 中断处理参考资料广义分类类别对CPU来说

2021-12-11 21:38:49 9362 4

原创 x86 - 特权级别 CPL / RPL / DPL / IOPL

本文内容:特权级别,Privilege Level 基本概念 描述符特权级(DPL,Descriptor Privilege Level) 当前特权级(CPL,Current Privilege Level) 请求特权级(RPL,Request Privilege Level) 特权指令(Privileged Instructions) 输出特权级(I/O Privilege Level) 存储位置DPLRPLCPLIOPL 控制转移的方法方法一、依从代码段方法二、调用门(Call Gate) 基本的特权级

2021-12-11 20:53:47 4353 4

原创 x86 - 分段与分页详解

本文内容: 分段机制详解 分页机制详解分页机制起源什么是线性地址从简单分页到层次结构地址转换过程处理页缺失页表项和页目录项 分段机制详解  每个程序都有属于自己的内存空间。在 16 位模式下,一个程序可以自由地访问不属于它的内存位置,甚至可以对那些地方的内容进行修改。这当然是不安全的,也不合法,但却没有任何机制来限制这种行为。在 32 位模式下,处理器要求在加载程序时,先定义该程序所拥有的段,然后允许使用这些段。定义段时,除了基地址(起始地址)外,还附加了段界限、特权级别、类型等属性。当程序访问一个段时

2021-12-11 20:35:39 1771 2

原创 x86 - CPU架构/寄存器详解 (三) 保护模式

本文内容: CPU架构通用寄存器状态寄存器状态标志(Status Flags)控制标志(DF flag)系统标志以及IOPL域(System Flags and IOPL Field)系统地址寄存器GDTRLDTRIDTRTR段寄存器控制寄存器CR0CR1CR2CR3CR4调试寄存器其他寄存器EIPTSC浮点寄存器MSR参考资料  80286 也是一款 16 位的处理器,大部分的寄存器都和 8086 处理器一样。因此,80286 和 8086 一样,因为段寄存器是 16 位的,而且只能使用 16 位的偏移

2021-12-07 23:18:58 5591

原创 x86 - CPU架构/寄存器详解 (二) 实模式(8086模式)

本文内容: 一、处理器架构 二、内存机制分段机制内存访问通用寄存器AX 寄存器BX 寄存器CX 寄存器DX 寄存器指针寄存器 BP变址寄存器 SI/DI其他寄存器CS 寄存器 和 IP 寄存器SS 寄存器和 SP 寄存器DS 寄存器和 ES 寄存器标志寄存器(FLAG) 三、参考资料  8086 具有 16 位的段寄存器、指令指针寄存器和通用寄存器(CS、SS、DS、ES、IP、AX、BX、CX、DX、SI、DI、BP、SP),因此,我们称它为 16 位的处理器。尽管它可以访问 1MB 的内存,但是只能分

2021-12-05 15:10:34 6184

原创 x86 - CPU架构/寄存器详解 (一)x86、8086、i386、IA-32 是什么?

x86体系详解,开篇

2021-12-05 14:23:46 2217

原创 BIOS简介

本文内容:零、什么是BIOS一、BIOS的功能(一) 自检及初始化(二) 程序服务处理 和 硬件中断处理二、工作流程三、BIOS的种类1. AMI BIOS2. Award BIOS四、CMOS是什么?零、什么是BIOS  计算机用户在使用计算机的过程中,都会接触到BIOS,它在计算机系统中起着非常重要的作用。  BIOS,Basic Input/output system,即基本输入/输出系统,完整地说应该是 ROM-BIOS,是只读存储器基本输入/输出系统的简写。 实际上它是被固化在计算机ROM(

2021-11-06 17:57:40 11521

原创 ECS 入门到入土: 一、什么是 ECS

编写本文时,Entities 包更新到了 preview 1 - 0.11.2 版本主要参考官方文档,同时结合我自己的一些开cai发keng经历,建议英语好的同学直接去啃English — ECS DocsDemo List入门首选,DOTS的HelloWorld [https://github.com/Unity-Technologies/EntityComponentSystemSamples ]深入研究,大型战争场面 [https://github.com/Unity-Technologi.

2021-03-30 21:52:22 5425

原创 编译原理 C-Minus词法分析(FLEX)

C–源代码词法分析文章目录C--源代码词法分析一、实现目标二、C-Minus语法三、FlexFlex简介Flex正则表达式Flex安装与使用Flex文件编写定义规则用户代码四、总结一、实现目标编写一个程序对C–语言(C语言子集)书写的源代码进行词法分析,并打印分析结果。程序要能够检查源代码中可能包含的词法错误:最低要求1.1:能够识别词法中未定义的字符;其他要求1.2:能识别指数...

2020-01-03 18:57:19 6885

原创 IP:PORT正确格式---Python正则表达式

IP:PORT正确格式—Python正则表达式 用python的正则表达式来判断输入的ip:port字符串格式是否正确ip:互联网协议地址 不考虑实际应用,理论上ip的范围是0.0.0.0~255.255.255.255 port:端口号 本文中指的是逻辑端口,端口数的范围是0 到65535 可用代码:# -*- coding: utf-8 -*-import re...

2018-08-16 16:08:36 7084 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除