摘要:这篇文章是关于我的GBA库lib_hl中数学库的定点数部分。 定点数是什么?为什么要用定点数? 在之前的文章中,我已经介绍了GBA的硬件,它的CPU竟然居然理所当然没有浮点数运算单元! 我要写的是光线追踪程序,基本上都在做精确的数学运算,而这个CPU却连浮点数都不支持,那不是没得玩? 当然是有方法的 阅读全文
posted @ 2020-04-14 20:30 H5L0 阅读(163) 评论(0) 推荐(0) 编辑
摘要:写个自己的GBA库 上篇文章(待写)介绍了GBA的硬件,例如寄存器、内存、中断等,其中很多寄存器可以说是GBA的遥控器,要使用GBA的硬件功能,就是要和这些寄存器打交道。 怎么打交道呢?这些寄存器都有地址,在C语言中可以转成指针来读写。为了方便使用,我们需要先写一个GBA库,库里应该有: 定义GBA 阅读全文
posted @ 2020-04-14 20:15 H5L0 阅读(107) 评论(0) 推荐(0) 编辑
摘要:上两篇文章我介绍了我最近设计的一套指令集及其对应的虚拟机架构,这篇文章就来介绍虚拟机的实现过程。 虚拟机其实很简单,需要做的只是用一种指令去模拟另一种指令的功能。 为了运行速度,当然希望用尽量低级的方法去模拟,所以应该用汇编编写,但为了效率,我先用的C语言写出整体逻辑,后期再考虑汇编。 虚拟机原理 阅读全文
posted @ 2020-02-26 20:20 H5L0 阅读(343) 评论(0) 推荐(0) 编辑
摘要:前一篇文章简单介绍了我的VL指令集和LVM虚拟机,这篇文章介绍VL指令集的设计过程。 设计指令集 这里我一步步说明目前指令的设计过程,这些指令大多已经确定,也有一些是临时加入,还没有验证实用性。 希望看到这篇文章的读者能多多给我提建议,让我的虚拟指令能从玩具变成实用品。 针对软件设计的虚拟指令集 在 阅读全文
posted @ 2020-02-18 13:03 H5L0 阅读(741) 评论(0) 推荐(0) 编辑
摘要:前言 在半年前,我萌生了创造一门独特的编程语言的想法。大约三个月前,脑中的这个想法逐渐变得清晰,我想实现一种可以不用键盘就能编写代码的语言。比较准确得说应该是一门图形化编程语言,不完全是像蓝图脚本那样,而是结合代码和图形的优点。 设想中它是一门高级解释型语言,所以我先命名它为“H”语言,意为高级。但 阅读全文
posted @ 2020-02-18 13:00 H5L0 阅读(452) 评论(0) 推荐(0) 编辑
摘要:在科学运算、图形学、游戏等很多领域中,开方是很常见却又非常耗时的运算,因此必须使用快速(有时还要求准确)的开方算法。 说起开方算法我们一般想到的是牛顿迭代法,这里我介绍一种更好的方法——逐比特确认法。 逐比特确认法从数字的本质出发,关注结果的每一比特位。它从最高位开始,向低位逐一确认某位是0还是1。 阅读全文
posted @ 2020-01-20 20:05 H5L0 阅读(256) 评论(0) 推荐(0) 编辑
摘要:C语言支持定义可变参数的函数,方法是在函数的参数列表最后加上 " ... ",代表变长的参数列表,例如: void Func(int num, ...) { } 需要注意 “...” 必须在最后,而且前面起码要有一个固定的参数,类型可以任意。 为什么要有一个固定的参数呢?这篇文章要说明的就是这个问题 阅读全文
posted @ 2019-12-11 14:26 H5L0 阅读(325) 评论(0) 推荐(1) 编辑
摘要:简单测试了C语言中分别使用16位整数和32位整数实现的定点数和内建浮点数的乘除性能: 在release 下 循环 1 0000 0000 * 20次 的时间: CPU:7700K/4.2Ghz 定点数实现如下: fp16:本质上是int运算 fp32:本质上是long long运算 后续补充 byt 阅读全文
posted @ 2019-12-05 11:01 H5L0 阅读(114) 评论(0) 推荐(0) 编辑
摘要:前段时间用C#写了一个光线追踪程序,可以渲染圆球,平面这些基本图形,大致尝试做了一下反射、光照、阴影等效果。 ↑ C#实现的光线追踪 ↑ GBA上C实现的光线追踪 然而,在我打算继续深入优化的时候,我失去了我的好帮手强强电脑,换成了超极本。看来继续做技术密集型光线追踪是不行的了。 就在这时,我看到了 阅读全文
posted @ 2019-09-28 13:37 H5L0 阅读(259) 评论(0) 推荐(0) 编辑
摘要:最近在写GBA的程序。GBA运行的是C的裸机代码,而中途使用的很多小工具则用C#写的,例如:图片转换到.h头文件,制作三角函数表,还有像这次介绍的将圆柱面贴图映射到半球贴图的小工具。这样的小功能,用C#写就是一小会的事,效率非常高。 这时候就能体现出来——各语言有各自的用途,C用来做硬件开发,C++ 阅读全文
posted @ 2019-09-27 14:45 H5L0 阅读(174) 评论(1) 推荐(0) 编辑