设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 开源热点 查看内容

LUPA开源周刊:《红警1》源码放出 Linus又说骚话

2020-6-22 16:40| 发布者: joejoe0332| 查看: 13879| 评论: 0|原作者: LUPA开源社区|来自: LUPA开源社区

摘要: 《红警1》源码放出!代码规范到不可思议  还记的那些年,风靡全球的《红色警戒》吗?5月27日,知名游戏公司EA在GitHub上搞了个大新闻,把《命令与征服》系列中的2个游戏的部分源码开源了,上传GitHub短短几天,标 ...


  还记的那些年,风靡全球的《红色警戒》吗?5月27日,知名游戏公司EA在GitHub上搞了个大新闻,把《命令与征服》系列中的2个游戏的部分源码开源了,上传GitHub短短几天,标星突破4K!这两个游戏分别是:Tiberian Dawn(泰伯利亚的黎明) 和 Red Alert(红色警戒)。


  《命令与征服》系列是西木工作室(Westwood Studios)的招牌作品。1998 年,EA 收购了西木。上古游戏的代码长啥样?其实这次 EA 开源的红警,是在 1996 年 10 月 31 日正式发布的第一代红警。红警1 的启动程序名为 RA95.exe,因此在国内也有很多叫「红警95」。

  EA公司在GitHub上的这个项目,主要包含2个文件夹,分别是《红色警戒》和《泰伯利亚的黎明》的源代码。但不要觉得文件很大,总共只有5MB数据,这是因为此次开源,并不涉及游戏素材和游戏引擎,只包括 TiberianDawn.DLL 和 RedAlert.dll 的源码,允许 Mod 社区更好的改变游戏行为。

  进入文件夹后,醒目的.CPP和.H格式映入眼帘。另外,令不少网友吐槽的是,命令与征服系列游戏居然是C++ 实现的(这位同学……这是1996年的游戏,C#在2000年才开始发行……)。再来细看这些代码文件,虽然文件数量很多,但是文件命名上却非常的清晰,可以说是一目了然了。代码非常规范,注释清晰,让人折服。

  想要了解某个功能或模块如何实现,找到对应代码文件应该还算轻松。再到具体的代码,注释中的信息非常齐全,项目名称、文件名、程序员姓名、开始日期、最后更新日期、函数功能介绍,应有尽有。更多相关信息,请关注本次专辑……

  近日 Linus Torvalds 拒绝了 AWS 工程师提交的一个补丁,该补丁的目的是减轻 Intel CPU 遭遇一种新型窥探攻击而导致数据泄露的风险。 这种新型攻击名为“探听辅助 L1 数据采样攻击”,简称 Snoop (CVE-2020-0550)。


  今年 3 月,来自 AWS 的软件工程师 Pawel Wieczorkiewicz 率先发现了 Intel 处理器的这一漏洞,它可能会泄露 CPU 内部存储器或缓存中的数据,涉及 CPU 包括 Intel 旗下流行的 Xeon 和 Core 系列处理器。Pawel 迅速向 Intel 报告了此问题,随后该漏洞被 Intel 定位为中等严重性漏洞。

  新的 Snoop 攻击利用了 Intel CPU 多级缓存、缓存一致性和总线监听等特性,通过位于 CPU 内核中的一级数据缓存(L1D),通过“总线监听”(bus snooping)功能 —— 在 L1D 中修改数据时发生的缓存更新操作,将数据从 CPU 中泄漏出来。

  以近代 CPU 的视角来说,计算机通常会采用三级缓存的设计来提高 CPU 的运行效率。三级缓存包括 L1 一级缓存、L2 二级缓存、L3 三级缓存,这些缓存都集成在 CPU 内,它们的作用是作为 CPU 与主内存之间的高速数据缓冲区。

  其中 L1 最靠近 CPU 核心;L2其次;L3再次。运行速度方面:L1最快、L2次快、L3最慢;容量大小方面:L1最小、L2较大、L3最大。在执行一项任务时,CPU 会先在最快的 L1 中寻找需要的数据,找不到再去找次快的 L2,还找不到再去找 L3,L3 都没有才去内存找。

  而一级缓存其实还分为一级数据缓存(Data Cache,D-Cache,L1D)和一级指令缓存(Instruction Cache,I-Cache,L1I),分别用于存放数据及执行数据的指令解码,两者可同时被CPU 访问,减少了 CPU 多核心、多线程争用缓存造成的冲突,提高了处理器的性能。一般CPU 的 L1I 和 L1D 具备相同的容量,例如 I7-8700K 的 L1 即为 32KB+32KB。Snoop 攻击就是一种窃取 L1D 缓存中数据的攻击手段。更多相关信息,请关注本次专辑……

  继微软在2018年开源了MS-DOS系统 1.25和2.0版本的源代码之后。微软又一次开源了,这次开源的项目是早期的编程语言GW-BASIC。这次开源的项目是微软1983年的基于8088汇编语言开发而成的!你没看错是汇编语言,在那个时代也只有汇编语言才是王道。


  也就是在1983年,Bjarne的Stroustrup发布了第一个版本的C++语言;另一个大名鼎鼎的公司Borland发布了Trouble Pascal;微软发布了MS-DOS 2.0;苹果推出了第一款基于GUI的Apple Lisa。1983年对于计算机行业是一个非常重要的一年,发生了非常多的计算机界的重大事件的一年。

  也许有人会问,为什么软件是基于汇编语言开发而成?为什么不是C语言?在当时的硬件环境,开发任何没有什么语言能与汇编语言比肩!汇编语言也是无形中挑高了计算机软件体系的门槛,复杂而又抽象的编程语言,要想达到一个基本的程序员的标准,绝不是现在这样随便一个人到培训机构学一个月就敢去面试的情形,一年也许只是入门,三五年也许才入行!

  GW-BASIC在后来的几年为微软赢得了天下,直到如今的VisualBase,微软依然不曾放弃。有兴趣的小伙伴赶紧去领略一下,为微软立下汗马功劳的BASIC的代码是什么样的,可以到微软的开源项目下就有源码可下载。对于微软这样的企业,能选择开放源码也是一个难得的举措,即便这些开源的项目可能有些过时!更多相关信息,请关注本次专辑……


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部