as/sample/sum_10.caslを変更
[YACASL2.git] / test / system / casl2_opt / opt_slaOn / 0.txt
index d6f1778..a8afb2e 100644 (file)
 ;;; sum_10.casl
-;;; 出力 GR0: 1から10までの整数をすべて加算した値
+;;; 1から10までの整数をすべて加算した値をメモリーに格納する
 MAIN    START
         PUSH    0,GR1
-        LAD     GR0,0           ; GR0を初期化
-        LD      GR1,FST         ; GR1に初項を転送
-LOOP    ADDL    GR0,GR1         ; ループ先頭
+        PUSH    0,GR2
+        XOR     GR2,GR2         ; GR2を初期化
+        LD      GR1,FST         ; GR1に初項をメモリーから転送
+LOOP    ADDL    GR2,GR1         ; ループ先頭。GR2 <- GR2 + GR1
         ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
         CPL     GR1,LST         ; GR1が末項より大きい場合は終了
         JPL     FIN             ; ↓
         JUMP    LOOP            ; ループ終端
-FIN     POP     GR1
+FIN     ST      GR2,RST         ; GR2の結果をメモリーに転送
+        POP     GR2
+        POP     GR1
         RET
 FST     DC      1               ; 初項
 LST     DC      10              ; 末項
 STEP    DC      1               ; 公差
+RST     DS      1               ; 結果
         END
 
 Assemble ../../../../as/sample/sum_10.casl (0)
 ../../../../as/sample/sum_10.casl:    1:;;; sum_10.casl
-../../../../as/sample/sum_10.casl:    2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl:    2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する
 ../../../../as/sample/sum_10.casl:    3:MAIN    START
 ../../../../as/sample/sum_10.casl:    4:        PUSH    0,GR1
-../../../../as/sample/sum_10.casl:    5:        LAD     GR0,0           ; GR0を初期化
-../../../../as/sample/sum_10.casl:    6:        LD      GR1,FST         ; GR1に初項を転送
-../../../../as/sample/sum_10.casl:    7:LOOP    ADDL    GR0,GR1         ; ループ先頭
-../../../../as/sample/sum_10.casl:    8:        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
-../../../../as/sample/sum_10.casl:    9:        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
-../../../../as/sample/sum_10.casl:   10:        JPL     FIN             ; ↓
-../../../../as/sample/sum_10.casl:   11:        JUMP    LOOP            ; ループ終端
-../../../../as/sample/sum_10.casl:   12:FIN     POP     GR1
-../../../../as/sample/sum_10.casl:   13:        RET
-../../../../as/sample/sum_10.casl:   14:FST     DC      1               ; 初項
-../../../../as/sample/sum_10.casl:   15:LST     DC      10              ; 末項
-../../../../as/sample/sum_10.casl:   16:STEP    DC      1               ; 公差
-../../../../as/sample/sum_10.casl:   17:        END
+../../../../as/sample/sum_10.casl:    5:        PUSH    0,GR2
+../../../../as/sample/sum_10.casl:    6:        XOR     GR2,GR2         ; GR2を初期化
+../../../../as/sample/sum_10.casl:    7:        LD      GR1,FST         ; GR1に初項をメモリーから転送
+../../../../as/sample/sum_10.casl:    8:LOOP    ADDL    GR2,GR1         ; ループ先頭。GR2 <- GR2 + GR1
+../../../../as/sample/sum_10.casl:    9:        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
+../../../../as/sample/sum_10.casl:   10:        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
+../../../../as/sample/sum_10.casl:   11:        JPL     FIN             ; ↓
+../../../../as/sample/sum_10.casl:   12:        JUMP    LOOP            ; ループ終端
+../../../../as/sample/sum_10.casl:   13:FIN     ST      GR2,RST         ; GR2の結果をメモリーに転送
+../../../../as/sample/sum_10.casl:   14:        POP     GR2
+../../../../as/sample/sum_10.casl:   15:        POP     GR1
+../../../../as/sample/sum_10.casl:   16:        RET
+../../../../as/sample/sum_10.casl:   17:FST     DC      1               ; 初項
+../../../../as/sample/sum_10.casl:   18:LST     DC      10              ; 末項
+../../../../as/sample/sum_10.casl:   19:STEP    DC      1               ; 公差
+../../../../as/sample/sum_10.casl:   20:RST     DS      1               ; 結果
+../../../../as/sample/sum_10.casl:   21:        END
 
 Label::::
 MAIN ---> #0000
-MAIN.LOOP ---> #0006
-MAIN.FIN ---> #000F
-MAIN.FST ---> #0011
-MAIN.LST ---> #0012
-MAIN.STEP ---> #0013
+MAIN.LOOP ---> #0007
+MAIN.FIN ---> #0010
+MAIN.FST ---> #0015
+MAIN.LST ---> #0016
+MAIN.STEP ---> #0017
+MAIN.RST ---> #0018
 
 Assemble ../../../../as/sample/sum_10.casl (1)
 ../../../../as/sample/sum_10.casl:    1:;;; sum_10.casl
-../../../../as/sample/sum_10.casl:    2:;;; 出力 GR0: 1から10までの整数をすべて加算した値
+../../../../as/sample/sum_10.casl:    2:;;; 1から10までの整数をすべて加算した値をメモリーに格納する
 ../../../../as/sample/sum_10.casl:    3:MAIN    START
 ../../../../as/sample/sum_10.casl:    4:        PUSH    0,GR1
        #0000   #7001
        #0001   #0000
-../../../../as/sample/sum_10.casl:    5:        LAD     GR0,0           ; GR0を初期化
-       #0002   #1200
+../../../../as/sample/sum_10.casl:    5:        PUSH    0,GR2
+       #0002   #7002
        #0003   #0000
-../../../../as/sample/sum_10.casl:    6:        LD      GR1,FST         ; GR1に初項を転送
-       #0004   #1010
-       #0005   #0011
-../../../../as/sample/sum_10.casl:    7:LOOP    ADDL    GR0,GR1         ; ループ先頭
-       #0006   #2601
-../../../../as/sample/sum_10.casl:    8:        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
-       #0007   #2210
-       #0008   #0013
-../../../../as/sample/sum_10.casl:    9:        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
-       #0009   #4110
-       #000A   #0012
-../../../../as/sample/sum_10.casl:   10:        JPL     FIN             ; ↓
-       #000B   #6500
-       #000C   #000F
-../../../../as/sample/sum_10.casl:   11:        JUMP    LOOP            ; ループ終端
-       #000D   #6400
-       #000E   #0006
-../../../../as/sample/sum_10.casl:   12:FIN     POP     GR1
-       #000F   #7110
-../../../../as/sample/sum_10.casl:   13:        RET
-       #0010   #8100
-../../../../as/sample/sum_10.casl:   14:FST     DC      1               ; 初項
-       #0011   #0001
-../../../../as/sample/sum_10.casl:   15:LST     DC      10              ; 末項
-       #0012   #000A
-../../../../as/sample/sum_10.casl:   16:STEP    DC      1               ; 公差
-       #0013   #0001
-../../../../as/sample/sum_10.casl:   17:        END
+../../../../as/sample/sum_10.casl:    6:        XOR     GR2,GR2         ; GR2を初期化
+       #0004   #3622
+../../../../as/sample/sum_10.casl:    7:        LD      GR1,FST         ; GR1に初項をメモリーから転送
+       #0005   #1010
+       #0006   #0015
+../../../../as/sample/sum_10.casl:    8:LOOP    ADDL    GR2,GR1         ; ループ先頭。GR2 <- GR2 + GR1
+       #0007   #2621
+../../../../as/sample/sum_10.casl:    9:        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
+       #0008   #2210
+       #0009   #0017
+../../../../as/sample/sum_10.casl:   10:        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
+       #000A   #4110
+       #000B   #0016
+../../../../as/sample/sum_10.casl:   11:        JPL     FIN             ; ↓
+       #000C   #6500
+       #000D   #0010
+../../../../as/sample/sum_10.casl:   12:        JUMP    LOOP            ; ループ終端
+       #000E   #6400
+       #000F   #0007
+../../../../as/sample/sum_10.casl:   13:FIN     ST      GR2,RST         ; GR2の結果をメモリーに転送
+       #0010   #1120
+       #0011   #0018
+../../../../as/sample/sum_10.casl:   14:        POP     GR2
+       #0012   #7120
+../../../../as/sample/sum_10.casl:   15:        POP     GR1
+       #0013   #7110
+../../../../as/sample/sum_10.casl:   16:        RET
+       #0014   #8100
+../../../../as/sample/sum_10.casl:   17:FST     DC      1               ; 初項
+       #0015   #0001
+../../../../as/sample/sum_10.casl:   18:LST     DC      10              ; 末項
+       #0016   #000A
+../../../../as/sample/sum_10.casl:   19:STEP    DC      1               ; 公差
+       #0017   #0001
+../../../../as/sample/sum_10.casl:   20:RST     DS      1               ; 結果
+       #0018   #0000
+../../../../as/sample/sum_10.casl:   21:        END