本文介绍了GCC克隆修剪分析的第三阶段,扩展了对单个程序中多个克隆函数的处理,并在x86_64和aarch64架构上进行了测试。通过改进数据结构和比较算法,实现了对多个函数变体的跟踪与分析,成功识别出应修剪的函数。
这篇文章描述了我在SPO600课程中开发数字猜测游戏的过程。游戏生成1到99之间的随机数,玩家通过键盘输入进行猜测。每次猜测后,游戏会反馈“太高”或“太低”,并根据结果改变屏幕颜色。文章详细介绍了初始化、随机数生成、文本输出、键盘输入处理和图形反馈等实现细节。
在SPO600系列的最后一篇博客中,作者修复了AArch64上的分段错误,并确保每个函数都有修剪决策。通过添加安全检查和创建测试用例,验证了不同架构下的函数处理,强调了对汇编语言的深入理解。
该文章介绍了SPO600项目的最终目标,包括识别克隆函数的多个版本、创建测试用例和进行重构。通过使用函数“指纹”识别不同版本,并比较基本块和语句数量来判断是否修剪。测试案例展示了不同函数实现及其性能。尽管存在误判,项目实践过程充满挑战,作者对此感到自豪。
本文介绍了SPO600项目第二阶段,重点比较函数的不同变体以确定是否可以进行“修剪”。通过GIMPLE表示法分析控制流图,识别相似性,若变体在控制流图及操作数数量和内容上相同,则可考虑修剪。下一篇将探讨识别函数变体的步骤。
本文介绍了在Seneca Polytechnic的SPO600课程中,如何使用Makefile安装和构建GCC编译器。作者比较了x86与Aarch64架构的性能,发现x86在构建速度上更快。实验显示,修改时间戳重建GCC耗时59秒,而不做更改重建仅需15秒。尽管Aarch64遇到空间不足问题,作者对实验结果仍感满意。
这篇文章描述了一个软件可移植性与优化课程的实验,团队通过Mob编程解决了图形动画问题。最初的代码实现了图像对角线移动,但未能反弹。经过讨论,团队引入方向标志和位置调整,成功实现了边界反弹动画。作者对Mob编程和6502汇编语言的学习体验表示感激。
本文探讨了软件可移植性与优化课程中的实验,聚焦于6502汇编语言的挑战。作者解决了填充屏幕颜色和绘制边框线两个问题,通过学习地址映射和循环结构,提升了对低级机器操作的理解。
本文介绍了在软件可移植性与优化课程中进行的6502汇编实验,作者分享了多个实验的代码和结果,探讨了指令(如TYA、LSR、ASL和INY)的效果,强调了实践学习的重要性,并计划继续分享更多内容。
这篇博客介绍了SPO600课程的第一次实验,重点在6502 CPU和汇编语言的基础知识。通过在线模拟器,分析和修改代码以填充位图颜色,实验中计算了执行时间和内存使用,并进行了代码优化,最终实现了更快的代码和随机颜色填充,学习过程充满挑战与乐趣。
在最后一个学期,我选择了“SPO600 - 软件可移植性与优化”课程,以了解软件的内部工作原理。软件可移植性指软件在不同环境中高效运行而不损失功能或质量。我希望通过学习掌握多平台应用、游戏模拟器的工作原理,以及不同编程语言的性能差异。
今天是SPO666课程的首次讲座,教授介绍了课程结构及SSH的基本知识,包括生成SSH密钥和公私钥的区别。尽管过程复杂,大家最终成功连接。课程内容丰富,我期待学习更多知识。
完成下面两步后,将自动完成登录并继续当前操作。