简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文介绍了java虚拟机所能运行的基础指令,同时讲解了虚拟机是如何基于堆栈和队列配合相关基础指令,运行字节码程序的。最后我们给出了一段C语言代码,并详细讲解了我们的编译器如何把代码编译成能在java虚拟机上执行的java汇编语言
无需自己实现,直接可以调用的函数,我们都称为库函数,或是API, 本节,我们要为当前构建的虚拟机提供C语言库函数,我们要给解释器提供一种函数调用机制,这些函数无需程序自己实现,而是由我们的解释器提供的,C语言程序直接调用即可,这节,我们要实现的一个库函数就是printf
上一节,我们把C语言编译成了可以被java虚拟机加载执行的java汇编语言。这节,我们就jvm的基本机制进行深入了解,如果不理解java虚拟机的体系结构,那么我们不可能把C语言转换成能顺利在虚拟机上执行的字节码
我们把C代码编译成java字节码,这样我们的C语言便具备了可跨品台属性。通过把C语言编译成java字节码,我们不但能够继续学习和掌握编译原理相关的算法技术,于此同时,还能深入理解java虚拟机的基本原理,此乃一举两得之妙
我们已经成功解析了C语言的语法,接下来我们计划分两步走,一是开发一个C语言的解释器,也就是不编译,读取足够的源代码后直接执行。二是开发一个C语言的编译器,将C语言转换为java字节码,然后用java虚拟机来执行编译后的C程序。从这节开始,我们逐步实现解释器的开发。
上一节,我用java制作了一个虚拟软盘,当把软盘插入虚拟机,启动机器后,屏幕打印出java程序中设定的语句,然后卡死。在java代码中,有一个二进制数组,imgContent, 它里面存储的实际上是一段二进制代码,当虚拟机设置为从软盘启动后,这段代码会被bios读取到内存中,然后指示cpu去执行imgContent 所存储的二进制代码。
游戏的趣味性在与各种关卡和难度,游戏的难度如上台阶,具有层层递进的性质。本节我们为太空防御游戏增加关卡功能,让游戏的难度由低到高,每一关我们称作一个冲击波,前面的冲击波,外星人的数量比较少,下落速度也相对较慢,等到后面的冲击波时,外星人的数量会越来越多,速度和攻击力越来越大,于是游戏的难度也逐渐变大。当完成本节代码后,我们会得到如下效果,在每一轮冲击波开始时,界面会出现如下信号:当游戏...
像星际一样实现建筑物的渐变生成特效
实现像微信红包打开时钱币转动的动画精灵
本节开始,我们将基于上一个项目所学到的知识,利用createjs 和 Tween两个图形绘制库开发一款新的游戏,名为欲望都市。这个游戏具备一个特点就是2.5D,它是一种经济系统构建型游戏