我太菜了

喜欢写Hello World的未来程序员.

C++ 实现 Pratt Parsing

Partt Parsing

连雨不知春去 一晴方觉夏深 写作本文一方面是为了巩固笔者所学,另一方面也是将自己的一些理解分享给有缘的读者,希望能帮助到大家。本文在写作之前受到了文章 手写一个Parser - 代码简单而功能强大的Pratt Parsing 的启发,该文章对 Pratt Parsing 的描述十分细致,由浅入深,感谢大佬! Pratt Parsing 在跟Crafting Interpr...

Crafting Interpreters 翻译(cclox篇) 0x00

连雨不知春去 一晴方觉夏深 A BYTECODE VIRTUAL MACHINE

UE4 GC机制解析(四):Cluster(簇)

生命周期一致

远远围墙,隐隐茅堂。 飏青旗、流水桥旁。 Cluster中文叫“簇”,统一管理UE中将多个生命周期相同的UObject,以优化GC性能。 Cluster的作用和原理 区别于其他编程语言中普适性的GC,UE作为游戏引擎,其GC机制也与游戏息息相关。比如UE结合游戏分帧执行的特性,GC机制使用了分帧清理。同时游戏中也存在一些生死相关的物体,在GC标记时可以一起被标记为可达或不...

UE4 GC机制解析(三):标记与清除

GC锁、可达性分析

故乡云水地 归梦不宜秋 继续接上文,分析UE GC的mark和sweep。 可达性分析 通过调用 FRealTimeGC::PerformReachabilityAnalysis() 实现对所有 UObject 的可达性分析。 void PerformReachabilityAnalysis(EObjectFlags KeepFlags, bool bForceSing...

UE4 GC机制解析(二):GC锁与GC流程

GC锁、GC流程

天若有情天亦老 人间正道是沧桑 看了很多资料,很多文章都写得很优秀,但是没怎么见到有文章比较详细分析为什么GC的时候需要Stop The World。以及其他语言可以通过在字节码中插入safe point,或者直接通过字节码hook实现stop the world,UE4 又如何在C++上实现这样的操作? UObject 与GC 锁:UE4 GC 无 STW 带着问题写文...

UE4 GC机制解析(一):GC信息收集

收集对象,构造有向图

微微风簇浪 散作满河星 标记-清除的GC机制要包括以下四个流程。 接下来介绍UE4中的信息收集过程。 引擎加载流程中收集信息 由于内存信息,包括类型信息在编译期就已经确定,所以在反射支持的情况下,便能够在初始化的时候进行收集。之前介绍反射时,有讲到引擎加载的流程中会调用 ProcessNewlyLoadedUObjects() 函数(多次)。 而 Proces...

UE4 GC机制解析(零):概述

GC概述

春色三分 两分尘土 一分流水 GC 简介 通常,GC(Garbage Collection)是由编程语言在实现时,提供的一种自动管理资源生命周期的运行时机制。相对的有手动管理资源生命周期的机制,比如手动new/delete,malloc/free。也有一些自动管理,但并非强运行时(Runtime)的机制,比如RAII。其实可以像编程语言设计那样,按照抽象层次进行区分。...

王晓萍随笔

随笔

照花前后镜 花面交相映 篇1 在麓山南路的日子   山色空蒙,重重雾攒聚,潇潇暮雨,游人自来去。褪去冬日的寒气,浮岚暖翠,岳麓山腰老樟树的嫩芽渐次生起,树的年轮又厚了一圈,这是我在岳麓山看到樟树发芽的第二年了。   老树发芽,这是一种自然现象,冬去春来,在特定的时间点,又是一种象征与更替。纯真的校园时光如岳麓山脚昨日的青翠,我再也回不去了,新的笑脸又会倒映在天马后湖上。...

UE4中反射信息注册

反射信息注册时间

好景何曾虚过 胜友是处相留 回顾一下文章 UE4中反射信息收集 中的内容: 属性类型信息收集的流程 函数信息收集的流程 延迟注册信息的收集 可以整理成以下两张图: 生成UClass 对象的流程: 往UClass 对象上填充信息的流程: 收集的路程已经确定,而对于注册的执行路径还是未知,也就是上图中的问号。 显然得从引擎的启动以及各模块的加载...

UE4中反射信息收集

信息收集分析,static自动注册

千里共如何 微风吹兰杜 上一篇中已经展开了类型生成文件中的宏,并较为详细地分析了生成代码中的类型注册信息。这里接着上面的三个疑问,继续进行探讨。 类型信息静态自动收集 C++ 静态自动注册 这里说的静态自动注册,指的是通过定义静态全局变量的方式,直接在该变量的构造函数里完成注册。 举个简单的例子,如果想在 main() 函数执行前,自动启动部分功能,使得 main()...