Merge branch 'master' of linux
authorj8takagi <j8takagi@nifty.com>
Tue, 21 Dec 2010 03:31:42 +0000 (12:31 +0900)
committerj8takagi <j8takagi@nifty.com>
Tue, 21 Dec 2010 03:31:42 +0000 (12:31 +0900)
Conflicts:
Makefile
as/casl2lib/outl.casl
as/casl2lib/str2l.casl
test/system/Makefile

1  2 
as/casl2lib/str2l.casl
as/err/a.o
test/system/casl2/Test.mk

@@@ -1,9 -1,10 +1,10 @@@
 -;;; *** This file is auto generated. ***
--;;; 0〜65535の範囲にある整数の入力を受け付ける
  ;;; 10進数の整数を表す文字列を数値に変換
++;;; 数値の範囲は、0から65535
  ;;; 入力 GR1: 文字列を格納するアドレス
--;;;      GR2: 文字列の長さ。1-5を想定
--;;; 出力 GR0: 数値(0〜65535)
--;;;           文字列が長過ぎる場合や数値以外の場合は、GR2に#FFFFを格納
++;;;      GR2: 文字列の長さ。最大5けた
++;;; 出力 GR0: 数値
++;;;           文字列が最大長より大きい場合や数値以外の場合は、GR0は#FFFF、OFは1
++;;; 依存プログラム: MULL
  STR2L   START
          PUSH    0,GR3
          PUSH    0,GR4
@@@ -34,10 -35,10 +35,10 @@@ MUL10   CPA     GR4,=1          ; ã\83«ã\83
          JZE     NEXT            ; (GR4 = 1)の場合、ループ脱出
          JMI     NEXT            ; ↓
          CALL    MULL            ; MULLを呼び出し、GR0 <- GR1 * GR2
--        JOV     FIN             ; ↓
++        JOV     FIN             ; ↓ オーバーフロー時は、プログラム終端へジャンプ
          LD      GR1,GR0         ; GR1 <- GR0
          LAD     GR4,-1,GR4      ; GR4 <- GR4 -1
--        JUMP    MUL10           ; ループ終端
++        JUMP    MUL10           ; ループ終端へジャンプ
  NEXT    LD      GR4,NLEN        ; GR4 <- NLEN。復元
          ADDL    GR3,GR1         ; GR3 <- GR3 + GR1
          JOV     FIN             ; ↓
@@@ -47,16 -48,47 +48,50 @@@ NAN     LAD     GR2,#FFFF       ; GR2 <
          JUMP    FIN             ; FINへジャンプ
  CP      LD      GR1,GR3         ; GR0 <- GR3
          LD      GR0,LEN         ; GR0 <- LEN
--        JUMP    FIN
--LENOV   LAD     GR0,#FFFF
--        SRA     GR0,1
++        JUMP    FIN             ; プログラム終端へジャンプ
++LENOV   LAD     GR0,#FFFF       ; 文字列が最大長より大きい場合、GR0 <- #FFFF
++        SRA     GR0,1           ; ↓ オーバーフロー発生
  FIN     POP     GR4
          POP     GR3
          RET
  ZERO    DC      '0'
  NINE    DC      '9'
--MAXLEN  DC      10              ; 10桁の数値まで入力可能
++MAXLEN  DC      5               ; 文字列の最大長
  STR     DS      1
  LEN     DS      1
  NLEN    DS      1
          END
++<<<<<<< HEAD
++=======
+ ;;; 0〜65535の範囲にある正数のかけ算(筆算方式)を行う
+ ;;; 入力 GR1:被乗数 GR2:乗数
+ ;;; 出力 GR0:積
+ ;;; 積が65535より大きい場合は、GR0は積の下位16ビットになり、オーバーフロー
+ MULL    START
+         PUSH    0,GR1
+         PUSH    0,GR3
+         XOR     GR0,GR0         ; 積
+         AND     GR1,GR1         ; (GR1 = 0)の場合、終了
+         JZE     FIN             ; ↓
+         AND     GR2,GR2         ; (GR2 = 0)の場合、終了
+         JZE     FIN             ; ↓
+         LAD     GR3,1           ; 対象ビット
+ LOOP    PUSH    0,GR3           ; ループ先頭。GR2のビット中でGR3が示すビットが0の場合、NEXTへジャンプ
+         AND     GR3,GR2         ; ↓
+         POP     GR3             ; ↓
+         JZE     NEXT            ; ↓
+         ADDL    GR0,GR1         ; GR0 <- GR0 + GR1
+         JOV     FIN             ; GR0がオーバーフローした場合、ループ脱出
+ NEXT    SLL     GR3,1           ; GR3を1回左シフト
+         AND     GR3,GR3         ; (GR3 = 0)の場合、ループ脱出
+         JZE     FIN             ; ↓
+         CPL     GR3,GR2         ; (GR3 > GR2)の場合、ループ脱出
+         JPL     FIN             ; ↓
+         SLL     GR1,1           ; GR1を1回左シフト
+         JOV     FIN             ; GR1がオーバーフローした場合、ループ脱出
+         JUMP    LOOP            ; ループ終端
+ FIN     POP     GR3
+         POP     GR1
+         RET
+         END
++>>>>>>> b22ffc2662e5fe300bfab3adb46ca97b5b630d8b
diff --cc as/err/a.o
index eb53e2d,eb53e2d..0000000
deleted file mode 100644,100644
Binary files differ
@@@ -27,11 -31,11 +31,11 @@@ checkall: clean $(DETAIL_FILE) $(TIME_F
        @$(CAT) $(TIME_FILE) >>$(LOG_FILE)
        @$(call disp_test_log,$(LOG_FILE))
  
--set: $(TEST0_FILE)
++set:
+       @-$(call exec_cmd,$^,$@,$(ERR_FILE))
        @$(CAT) $^
  
- reset: cleanall $(TEST0_FILE)
-       @$(CAT) $(TEST0_FILE)
+ reset: cleanall set
  
  time: cleantime $(TIME_FILE)