From 141084631a1fe756928bca2adb4b79e77cef9875 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Fri, 2 Nov 2012 19:47:54 +0900 Subject: [PATCH] =?utf8?q?=E6=97=A2=E5=AD=98=E3=83=97=E3=83=AD=E3=82=B0?= =?utf8?q?=E3=83=A9=E3=83=A0=E3=81=AE=E6=8E=A8=E6=95=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- c/Makefile | 13 +++++++++---- c/fizzbuzz | Bin 8434 -> 0 bytes c/fizzbuzz.c | 7 +++++-- casl/fizzbuzz.casl | 42 ++++++++++++++++++------------------------ ruby/fizzbuzz.rb | 2 +- 5 files changed, 33 insertions(+), 31 deletions(-) delete mode 100755 c/fizzbuzz diff --git a/c/Makefile b/c/Makefile index 0bcad0e..fb2ddc9 100644 --- a/c/Makefile +++ b/c/Makefile @@ -7,10 +7,15 @@ CASL2SRC := struct.c hash.c ASSRC := assemble.c token.c label.c EXECSRC := exec.c dump.c -.PHONY: clean +.PHONY: all clean -fizzubzz: fizzbuzz.c - $(CC) $(CFLAGS) -o fizzbuzz $^ +all: fizzbuzz fizzbuzz2 + +fizzbuzz: fizzbuzz.c + $(CC) $(CFLAGS) -o $@ $^ + +fizzbuzz2: fizzbuzz2.c + $(CC) $(CFLAGS) -o $@ $^ clean: - @$(RMF) fizzbuzz + @$(RMF) fizzbuzz fizzbuzz2 diff --git a/c/fizzbuzz b/c/fizzbuzz deleted file mode 100755 index 3f12845b445a11e07d27783a560e3862ca0e645f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8434 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 w(L(iv)99`~EBZ~e3Of#`{&HJrZMetU7U_ +enum { + MIN = 1, + MAX = 100, +}; void puts_fizzbuzz(int n) { @@ -19,10 +23,9 @@ void puts_fizzbuzz(int n) int main() { - const int max = 100, min = 1; int i; - for(i = min; i <= max; i++) { + for(i = MIN; i <= MAX; i++) { puts_fizzbuzz(i); } return 0; diff --git a/casl/fizzbuzz.casl b/casl/fizzbuzz.casl index fff05f0..3866614 100644 --- a/casl/fizzbuzz.casl +++ b/casl/fizzbuzz.casl @@ -2,9 +2,9 @@ MAIN START RPUSH LD GR1,MIN ; GR1にMINを代入 LOOP CALL FIZBUZ ; FIZBUZを呼び出す - LAD GR1,1,GR1 ; GR1 <- GR1 + 1 CPL GR1,MAX ; GR1とMAXを比較 - JPL FIN ; GR1 > MAX の場合、FINへジャンプ + JZE FIN ; GR1 = MAX の場合、FINへジャンプ + LAD GR1,1,GR1 ; GR1 <- GR1 + 1 JUMP LOOP ; LOOPへジャンプ FIN RPOP RET @@ -21,30 +21,24 @@ FIZBUZ START XOR GR4,GR4 ; GR4: 文字列「Fizz」の長さおよびフラグ XOR GR5,GR5 ; GR5: 文字列「Buzz」の長さおよびフラグ XOR GR6,GR6 ; GR6: 文字列「FizzBuzz」のフラグ -GETFIZ LD GR2,FIZNUM ; GR2にFIZNUM=3を代入 + LD GR2,FIZNUM ; GR2にFIZNUM=3を代入 CALL DIVL ; GR3 <- GR1 % 3(= GR2) - LD GR3,GR3 ; GR3のフラグ値を取得 - JNZ GETBUZ ; GR3が0でない場合、FIZNUMの倍数ではないので、GETBUZへジャンプ - LD GR4,FIZLEN ; GR4に文字列「Fizz」の長さFIZLEN=4を代入 -GETBUZ LD GR2,BUZNUM ; GR2にBUZNUM=5を代入 + LD GR4,GR3 ; GR4 <- GR3 + LD GR2,BUZNUM ; GR2にBUZNUM=5を代入 CALL DIVL ; GR3 <- GR1 % 5(= GR2) - LD GR3,GR3 ; GR3のフラグ値を取得 - JNZ PUTS ; GR3が0でない場合、BIZNUMの倍数ではないので、PUTSへジャンプ - LD GR5,BUZLEN ; GR4のフラグ値を取得 -PUTS LD GR6,GR4 ; GR6 <- GR4 - AND GR6,GR5 ; GR6 <- GR6 and GR4 - JZE CHKFIZ ; GR6が0の場合、GR4かGR5のどちらかが0なので、CHKFIZへジャンプ - ADDL GR4,GR5 ; GR4 <- GR4 + GR5 - JUMP PUTFIZ ; 「FizzBuzz」を出力するため、PUTFIZへジャンプ -CHKFIZ LD GR4,GR4 ; GR4のフラグ値を取得 - JZE CHKBUZ ; GR4が0の場合、CHKBUZへジャンプ -PUTFIZ ST GR4,LEN ; LEN <- GR4 - OUT FIZZ,LEN ;「Fizz」または「FizzBuzz」を出力 + LD GR5,GR3 ; GR5 <- GR3 + LD GR6,GR4 ; GR6 <- GR4 or GR5 + OR GR6,GR5 ; ↓ + JNZ PUTFIZ ; GR6が0以外の場合、GR4かGR5のどちらかが0以外なので、PUTFIZへジャンプ + OUT FIZZ,FBLEN ; 「FizzBuzz」を出力 + JUMP FIN ; 「FizzBuzz」を出力するため、PUTFIZへジャンプ +PUTFIZ LD GR4,GR4 ; GR4のフラグ値を取得 + JNZ PUTBUZ ; GR4が0以外の場合、PUTBUZへジャンプ + OUT FIZZ,FIZLEN ;「Fizz」を出力 JUMP FIN ; FINへジャンプ -CHKBUZ LD GR5,GR5 ; GR5のフラグ値を取得 - JZE PUTNUM ; GR5が0の場合、PUTNUMへジャンプ -PUTBUZ ST GR5,LEN ; LEN <- GR4 - OUT BUZZ,LEN ;「Buzz」を出力 +PUTBUZ LD GR5,GR5 ; GR5が0以外の場合、PUTNUMへジャンプ + JNZ PUTNUM ; ↓ + OUT BUZZ,BUZLEN ;「Buzz」を出力 JUMP FIN ; FINへジャンプ PUTNUM CALL OUTL ; GR1の数値を表示 FIN RPOP @@ -55,4 +49,4 @@ FIZZ DC 'Fizz' BUZZ DC 'Buzz' FIZLEN DC 4 BUZLEN DC 4 -LEN DS 1 +FBLEN DC 8 diff --git a/ruby/fizzbuzz.rb b/ruby/fizzbuzz.rb index 55b7316..6746370 100755 --- a/ruby/fizzbuzz.rb +++ b/ruby/fizzbuzz.rb @@ -15,7 +15,7 @@ def puts_fizzbuzz(n) end min = 1 -max = 100 +max = 65535 for i in min..max puts_fizzbuzz(i) -- 2.18.0