一个优化了部分使用体验的修改版 Mars

一个优化了部分使用体验的修改版 Mars

同学们在使用 Mars 编写 P2 课下汇编程序时,一定遇到过以下问题:

IO 面板不能直接复制粘贴多行输入,否则会出现异常

Message/IO 面板尺寸较小,且无法进一步增加高度

也许充满创造力的你已经构建了一套基于第三方编辑器 + 命令行运行 Mars

的汇编“一条龙”方案,不再需要使用带 GUI 的 Mars

了,但也请留步,阅读一下这篇帖子,希望能抛砖引玉地为你将来的美妙发明带来一些启发。

注:以下内容为本人在 2022

秋计算机组成课程学习过程中所做的思考与成果分享,有部分适应性改动。本帖中发布内容均系个人过去的成果,对于未来可能发布的工具,请以课程组官方名义发布文件为准。

通过阅读原版 Mars 源码(附于 jar 压缩包内),我分析出问题的原因:

GUI

读入文本时,如遇一次读入多行的情况(比如接受粘贴文本),会直接“打包”处理带有多个换行符的文本。比如当应用

5 号系统调用读取整数时,Mars 就会尝试转换这类文本到

Integer。正逐渐上手 Java

的你应该知道,这样会产生NumberFormatException异常。简单说就是

Mars

没有正确处理一次性输入的多行文本。我的补丁方案则是在对应的类内部加一个缓存队列,将输入文本中第一个换行符后的全部内容放入缓存,待下一次读取时分行取出。

Mars 在创建代码编辑面板时未指定该面板的最小尺寸,导致 Java AWT

在计算编辑面板的最小尺寸时默认了一个较大数值,编辑面板的最小尺寸进一步限制了其下方消息/IO

窗口的最大高度。解决方案就是为代码编辑面板显式地声明最小尺寸为 0。

当然,在经过这样一番修改后,Mars

读入数据的局限性仍然很强,比如我们依然不能在一行输入中方便地按空格来分隔多个整数。当然,本帖作为一个抛砖引玉的软件修改思路参考帖,如果你有更高、更妙的想法,我们鼓励大家在讨论区一起分享、交流。

现将修改后的代码与重打包的jar文件分享给大家。保证修改版 Mars

除输入外,其他功能行为与原版完全一致。

https://bhpan.buaa.edu.cn/link/AA3C6FD01AE6A94651BF709B162D12BEFE(存档)

文件夹名:MARS_mod 有效期限:2024-01-31 23:59

目录结构说明:jar单个文件可直接运行。modified_codes目录下包含了所有有改动的代码文件,可自行与原版代码比对差异。modified_classes内对应这些代码文件重新编译后的字节码文件。

相关推荐

43岁宋慧乔自曝年龄焦虑 提升演技成重点
0365cc彩票APP官方版下载

43岁宋慧乔自曝年龄焦虑 提升演技成重点

🕒 12-27 👁️ 9749
lightroom入门教程 lr怎么将英文改成中文?
365地址

lightroom入门教程 lr怎么将英文改成中文?

🕒 09-05 👁️ 9888
‎ProKnockOut抠图p图修图神器&专业智能证件照制作
beat365正版唯一官网

‎ProKnockOut抠图p图修图神器&专业智能证件照制作

🕒 10-19 👁️ 8578