z80 golf(2)
昨日の続き。メモリ空間はすべて0 (= NOP)で埋められている。*1 よって 8000Hを CALL したいなら、RST 38Hなどで代用できる。あるいは、プログラムが終端にあるなら、そのままfall throughさせてしまえば良い。
たとえば、echoなら以下のようになる。(id:hiro_suzuki:20071206)
0000: D5 PUSH DE
0001: CD 03 80 CALL $8003
0004: 30 01 JR NC,$0007
0006: 76 HALT
しかし、CALL 8000HをRST 38Hに置き換えただけでは21バイトにしか縮まない。トップ集団は20バイト。
fall through型に書き換える必要があるのかも知れないが、私には思いつかない。Hello, worldですらこれだけハイレベルなのには正直まいった。
少年時代にZ80のハンドアセンブラをがしがしやっていた人は是非挑戦してみるといいと思う。
・Z80 機械語ニーモニック対応表
http://members.aol.com/njprog/z80_004.html
・Z80 命令表
http://www.infonet.co.jp/ueyama/ip/software/z80_command.html