From: j8takagi Date: Tue, 21 Dec 2010 03:31:42 +0000 (+0900) Subject: Merge branch 'master' of linux X-Git-Tag: v0.1p15~13 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d225ac1f580c59da7a063ef52da35c0af254dd3;p=YACASL2.git Merge branch 'master' of linux Conflicts: Makefile as/casl2lib/outl.casl as/casl2lib/str2l.casl test/system/Makefile --- 0d225ac1f580c59da7a063ef52da35c0af254dd3 diff --cc as/casl2lib/str2l.casl index 70532d3,95791f3..d75a2ba --- a/as/casl2lib/str2l.casl +++ b/as/casl2lib/str2l.casl @@@ -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 ; ルム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 diff --cc test/system/casl2/Test.mk index edfa278,023bce0..c231512 --- a/test/system/casl2/Test.mk +++ b/test/system/casl2/Test.mk @@@ -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)