GNU as でアセンブル時 FizzBuzz


はじめに

GNU as の .altmacro という機能を今更ながら知ったのでメモ。FizzBuzz はどうでも良い。

.altmacro の実際の使用

$ cat fizzbuzz.s
.altmacro # alternate macro modeを許可

.macro printn n
  .print "\n"
.endm

i=1
.rept 100
  .if i%5 && i%3
    printn %i # 式を文字列化してマクロに渡す
  .elseif i%5
    .print "Fizz"
  .elseif i%3
    .print "Buzz"
  .else
    .print "FizzBuzz"
  .endif
  i=i+1
.endr
$ as fizzbuzz.s | tail -20
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz
$ 

これだけ。

おわりに

おわりです。