用户工具

站点工具


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

032 库存报告

优化目标: 16行393步

16行377步

见:https://github.com/atesgoral/hrm-solutions/blob/master/solutions/32-Inventory-Report-16.393/16.377-cowboy.asm

想比16行385步方案,通过优化执行顺序,省掉了计数器初始化时减1的操作

snippet.asm
-- HUMAN RESOURCE MACHINE PROGRAM --
 
    JUMP     b
a:
    COPYFROM 19
    OUTBOX  
b:
    INBOX   
    COPYTO   15
    COPYFROM 14
    COPYTO   19
    COPYTO   18
    JUMP     d
sum:
    BUMPUP   19
counter:
    BUMPUP   18	
d:
    COPYFROM [18]
    JUMPZ    a
    SUB      15
    JUMPZ    sum
    JUMP     counter

15行31步

参考:https://github.com/atesgoral/hrm-solutions/blob/master/solutions/32-Inventory-Report-16.393/15.31.exploit-kyanet.asm

用于INBOX中ABCX数量都是固定的情况(游戏中A=4, B=5, C=2, X=3),

16行385步

优化掉一个 BUMPUP 18,由于无论找没找到,计数器18都会+1,因此在 COPYFROM [18] 之前就将计数器加一,这样就要求计数器初始化时为 -1。另外 先INBOX在初始化计数器,能省4步

snippet.asm
-- HUMAN RESOURCE MACHINE PROGRAM --
 
    JUMP     b
a:
    COPYFROM 19
    OUTBOX  
b:
    INBOX   
    COPYTO   15
    COPYFROM 14
    COPYTO   19
    BUMPDN   19
    COPYTO   18    
e:
    BUMPUP   19
d:
    BUMPUP   18
    COPYFROM [18]
    JUMPZ    a
    SUB      15
    JUMPZ    e
    JUMP     d

第一次pass 17行390步

snippet.asm
-- HUMAN RESOURCE MACHINE PROGRAM --
 
    JUMP     b
a:
    COPYFROM 19
    OUTBOX  
b:
    COPYFROM 14
    COPYTO   19
    COPYTO   18
    INBOX   
    COPYTO   15
c:
d:
    COPYFROM [18]
    JUMPZ    a
    SUB      15
    JUMPZ    e
    BUMPUP   18
    JUMP     c
e:
    BUMPUP   19
    BUMPUP   18
    JUMP     d
04-游戏/程序员升职记/032.txt · 最后更改: 2020/04/07 06:36 由 annhe