请安装我们的客户端
更新超快的免费小说APP
添加到主屏幕
请点击,然后点击“添加到主屏幕”
不过计算的本质可并不只是加减乘除,计算的本质需要有递归。在图灵机之中就是一个可以随意移动的读写头,这样才能让读写头才有可能来回往复地进行循环。
不过这个功能实际上冯唐刚才已经测试过了,毕竟刚才他记录的那些视频就是循环播放的。就算不是循环播放,想让视频之中一帧帧的画面动起来,也需要一个循环的便利。这属于是系统作为虚拟现实播放系统的内置功能,已经实现好了。
如此说来,阻止冯唐在系统界面里自己造一个计算机的一切阻碍都没有了。剩下的知识亿点点简单的,重复的,单调的编程模拟工作罢了。先把逻辑门做出来,还有其他的算术逻辑单元,然后是时钟,存储器比如堆栈,输入输出……
冯唐在大学的时候学了一门徒手造计算机的课程,虽然只是上个世纪的最简单的计算机,但是这些基础的东西他都还算熟悉。不就是肝吗?他有的是!
这样一来,冯唐就可以用这个简单的计算机完成一些有意思的任务了。例如枚举素数,用最简单最暴力的埃拉托斯特尼筛法就行,它只要要求计算机可以进行循环。或者是用枚举法进行密码的暴力破解……
以上这些都可以直接写点汇编解决。哦对了,冯唐还要把明确一下ISA。具体来说把计算机里面重重稀奇古怪的操作整理成一个表,抽象出一个汇编语言。不过冯唐在学校还学习了另外一门课,里面用到了一个非常经典的叫做mIpS的ISA。顺便一提,这个指令集系统的专利后来被国家买断了,用来研究自己的芯片……虽然最后还是失败了。
冯唐计算机都可以手搓出来,整理整理指令集那也是轻轻松松了,这只是做减法的事情,一些可以直接烧掉计算机的后门指令可不能暴露给用户。
然而就算是有了汇编,这也并不意味着冯唐就可以完成统计计算自己超凡视觉输出的任务了。因为这些图像信息的处理非常繁琐,它们是以像素点的方式存在的,具体来说是一个个矩阵,这和加减乘除并不一样。矩阵运算还需要一些更加通用的编程处理。
不过好在冯唐又学过一门从零开始手搓编译器的课程,可以把一门简化版的Java语言编译到字节码,甚至是mIpS汇编代码。
当然了,想要一步实现这个宏伟的功能是非常困难的,毕竟Java这样的高级语言是非常复杂的。不过这个问题冯唐在上课的时候遇到过,老师给出的解决方案比较暴力,那就是把Java这个语言拆分成多个小语言,然后一步步翻译过去。
而冯唐现在面对的困难要比这个更加复杂一些,因为上课时这其中每个小语言都有自己的解释器,但是现在冯唐什么都没有。冯唐也不打算写虚拟机,他要直接编译到mIpS指令集上。
冯唐想了一个非常聪明的笨办法,那就是将Java从功能上拆解成Java,Java1,Java2……JavaN最基础的Java0就是汇编语言,Java1有简单的寄存机抽象,并且Java1语言的编译器是用Java0语言(也就是汇编语言)写的。而Java2语言之中就有函数了,同时规定了函数调用的规则,而Java2语言的编译器是用Java1语言写得……到了最后JavaN语言就是真正的Java语言。
你看,这不就又套娃了起来。冯唐成功地将写一个Java编译器的工作简化成了写N个Java编译器,工作量提升了N倍,但是好处是其中的每一个步骤都是可重复的,可控的,增量的。就算是Java3的编译器写错了也不影响Java2程序还能跑。
总而言之,只需要这样亿点点努力,冯唐就可以写出来一个可以进行图像处理的软件了。不过图像处理是计算量非常庞大的任务,冯唐认为自己有必要进行并行化的处理,也就是将不同的任务同时跑。因为本来视频就已经拆成了一帧帧的样子,每一帧和其他帧都是独立的。现在冯唐的大脑记录了一个几秒的视频,有超过一千帧,只要同时跑一千个程序,那么这些帧不就能一下子处理完了吗?
然而想要进行并行化处理就需要对资源进行更加精细的分配。这里的资源指的是计算资源和存储资源。
存储资源比较好理解,系统界面里的空间如果不够用的话,那么就没办法同时处理一千张图片了,只能先处理一些,然后把处理完的中间过程擦掉,再处理其他。
计算资源可以看成计算的时间。例如语文考试时有两章卷子,有一张是作文,有一张是其他,那么在有限的时间里,冯唐需要分配自己的时间,哪些给作文。
这些惊喜的调度和分配就需要操作系统的帮助了。这不巧了吗?冯唐上学的时候又又学了一门手搓操作系统的课,不过用的是c语言。冯唐Java语言都可以搓出来,那么c语言也不在话下了。
只能说冯唐的本科计算机教育净教了一些屠龙之术,没想到这些屠龙之术还真有能被用上的一天。
冯唐一边想着,一边就动手开搓。不就是肝吗?冯唐就喜欢肝这个,只要不让他按部就班地锻炼超能力开发,让他肝到地老天荒都行。再说了,冯唐也进行了一下计划,他认为自己大概这么肝上两三年差不多就可以在大脑里肝出计算机,编译器和操作系... -->>
本章未完,点击下一页继续阅读