这里的控制流看起来很像C编译器编译的结构化程序的结果。为了跳过最后一个滚动,这段代码使用了一个新的JMP abs指令,占用了3个字节。条件分支只有两个字节,因为它们使用8位相对立即数来表示分支目标。
这个“跳过最后一个滚动”的JMP指令实际上可以通过将滚动调用移动到循环的开头,然后稍微改变控制流的结构来避免。菲利普想出了以下解决办法:
这段代码完全省略了3字节的JMP,并将另一个JMP转换为2字节的条件分支,总共节省了4个字节。
技巧6:使用位堆叠来画线
有些作品不使用斜率计数器,而是将直线的图案堆积成一个8位常数,因为直线上的像素遵循一个重复的8像素图案:
它的汇编代码很短。但是,修改后的斜率计数器更简洁。
获奖作品
以下是Philp的34字节获奖作品,他的代码很多部分都非常精致。
但是为什么会停在34字节呢?
比赛结束后,大家分享了代码和经验,我们也就如何改进进行了很多讨论。截止日期后还有一些更小的版本:
Philip-33字节:https://gist . github . com/fsphil/05 deaa 06804 B9 b 2054260 b 616 caf ed 4b
Philip-32字节:https://gist . github . com/fsphil/01 BDA 1 a9 DD 58 c 219002 DDD 6 e 18 b 36 c3f
Petri-31字节:https://github . com/petrihakkinen/c64-line/blob/master/main 31 . ASM
Philip-29字节:https://gist . github . com/fsphil/7655 a 394 EC 5 f 953 c 910 e 9d 9369 dced 56
你应该读读这些代码——其中有一些非常好的东西。
原文:https://Nur Pax . github . io/post/2019-08-18-脏把戏-6502-程序员-use.html
这篇文章是CSDN的译本。转载时请注明出处。
热门文章推荐
推荐阅读
- 秦律 “失期 法皆斩”导致陈胜吴广起义 秦律真的如此严苛吗
- 轩逸怎么样 这性价比你还犹豫 日产发力了 大家觉得轩逸如何
- 热血传奇:60%运2和20%运6的白色虎齿项链的实用性如何?
- 一个二婚的女人,如今又陪着谁,爱着谁
- 如果一个男人对你有这样的要求,那说明他很想你
- 男人越聊越热闹,女人一开始惜字如金,都是哑巴
- 如何判断自己的另一半是否爱你?
- 如果男人在你身上持续付出精力,那说明你很重要
- soa架构 如何理解面向服务的架构SOA
- 年年今夜 年年今夜 月华如练 长是人千里