c64 程序员 如何用最少的字节编写 C64 可执行文件( 二 )


这里的控制流看起来很像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的译本。转载时请注明出处。
热门文章推荐

推荐阅读