用户工具

站点工具


04-游戏:程序员升职记:039

039 重设坐标

优化目标:14行76步

35行44步

14行73步

见:https://github.com/atesgoral/hrm-solutions/blob/master/solutions/39-Re-Coordinator-14.76/14.73-FireGoblin.asm

跟15行79步类似,15行的问题是 COPYFROM 11 执行了两次,为了省去最后一步的 COPYFROM 14 COPYTO 1,导致 INBOX取的数先存后取,且还是在循环内取,因此多执行了几步。

snippet.asm
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步

snippet.asm
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步

snippet.asm
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步

snippet.asm
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 
04-游戏/程序员升职记/039.txt · 最后更改: 2020/04/07 06:36 由 annhe