第 39 关,重设坐标。指令集介绍请看:https://www.annhe.net/article-3828.html。
优化目标
14行76步
代码
35行44步
见 Github。
14行73步
见 Github。跟 15 行 79 步类似,15 行的问题是 COPYFROM 11
执行了两次,为了省去最后一步的 COPYFROM 14 COPYTO 1
,导致 INBOX 取的数先存后取,且还是在循环内取,因此多执行了几步。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
JUMP next out: ADD 15 OUTBOX COPYFROM 1 OUTBOX next: COPYFROM 14 COPYTO 1 INBOX cal: SUB 15 JUMPN out COPYTO 0 BUMPUP 1 COPYFROM 0 JUMP cal |
15行79步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
JUMP next out: ADD 15 OUTBOX COPYFROM 1 OUTBOX next: INBOX COPYTO 11 COPYFROM 14 COPYTO 1 cal: COPYFROM 11 SUB 15 JUMPN out COPYTO 11 BUMPUP 1 JUMP cal |
38行66步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
COPYFROM 15 ADD 15 COPYTO 11 ADD 15 COPYTO 7 JUMP next out: OUTBOX next: COPYFROM 14 COPYTO 0 INBOX SUB 15 JUMPN y0 ADD 15 SUB 11 JUMPN y1 ADD 11 SUB 7 JUMPN y2 OUTBOX BUMPUP 0 BUMPUP 0 BUMPUP 0 JUMP out y0: ADD 15 OUTBOX COPYFROM 0 JUMP out y1: ADD 11 SUB 15 OUTBOX BUMPUP 0 JUMP out y2: ADD 7 SUB 11 OUTBOX BUMPUP 0 BUMPUP 0 JUMP out |
第一次pass 15行84步
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
next: COPYFROM 14 COPYTO 1 INBOX COPYTO 11 cal: COPYFROM 11 SUB 15 JUMPN x COPYTO 11 BUMPUP 1 JUMP cal x: ADD 15 OUTBOX COPYFROM 1 OUTBOX JUMP next |
发表回复