-
ファイルは1サイクルで2項目読める
Before(2 cycle)
COPY F X ADDI X F X
After(1 cycle)
ADDI F F X
Mは無理
-
繰り返し回数が決まっている場合はインラインで
Before(13 cycle)
COPY * M
は2cycleCOPY 3 T MARK LOOP COPY F M SUBI T 1 T TJMP LOOP
After(6 cycle)
COPY F M COPY F M COPY F M
-
ループ終了判定を外に出して殺させる
Before(7 * X + 1 cycle)
COPY X T MARK LOOP COPY F M COPY F M SEEK 2 SUBI T 1 T TJMP LOOP
After(6 * X + 3 cycle)
COPY X T REPL KILLER NOOP MARK LOOP COPY F M COPY F M SEEK 2 JUMP LOOP MARK KILLER NOOP NOOP NOOP NOOP SUBI T 1 T TJMP KILLER KILL
次の処理に移る前に殺すのがポイント
-
2個づつ処理
Before(4 * X + 1 cycle)
COPY X T MARK LOOP COPY F M SUBI T 1 T TJMP LOOP
After(6 * X / 2 + 6 cycle)
MODI X 2 T FJMP EVEN COPY F M MARK EVEN SUBI X T T MARK LOOP COPY F M COPY F M SUBI T 2 T TJMP LOOP
-
行数の許す限りまとめて処理
Before(4 * X + 1 cycle)
COPY X T MARK LOOP COPY F M SUBI T 1 T TJMP LOOP
After(28 * (X / 13) + 4 * (X mod 13) + 2 cycle)
13個まとめる場合の例
DIVI X 13 T MARK LOOP1 @REP 13 COPY F M @END SUBI T 1 T TJMP LOOP1 MODI X 13 T MARK LOOP COPY F M SUBI T 1 T TJMP LOOP
-
通信するより持って歩いたほうが速い場合もある
Before(3 * N + 3 cycle)
REPL RECV MARK SEND_LOOP COPY #IN M JUMP SEND_LOOP MARK RECV LINK 800 LINK 800 MARK RECV_LOOP COPY M #OUT JUMP RECV_LOOP
After(N + 4 cycle)
MARK WALKER REPL WALKER COPY #IN X LINK 800 LINK 800 COPY X #OUT
Last active
September 23, 2018 12:33
-
-
Save bakenezumi/83380d7a6b15effdc74eb6c3c0484e1d to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment