ilasmでstack machine その7


概要

ilasmでstack machineやってみた。
俺言語、コンパイラを考えてみた。
3段階です。
1回目をハンドコンパイルしてみた。

10 a=1

    pushi   1
    set     a

30 b=a%15

loop:
    get     a
    pushi   15
    %

40 #=b=0*120

    if      fizzbuzz

50 b=a%5

    get     a
    pushi   5
    %

60 #=b=0*140

    if      buzz

70 b=a%3

    get     a
    pushi   3
    %

80 #=b=0*160

   if      fizz

90 ?=a

    get     a
    call    printi

100 #=a<100*30

tugi:
    get     a
    pushi   100
    if<     loop

110 #=255

    jp      ext

120 ?="fizzbuzz "

fizzbuzz:
    push    "fizzbuzz"
    call    prints

130 #=180

jp      tugi

140 ?="buzz "

buzz:
    push    "buzz"
    call    prints

150 #=180

    jp      tugi

160 ?="fizz "

fizz:
    push    "fizz"
    call    prints

180 a=a+1

tugi:
    get     a
    pushi   1
    +
    set     a

190 #=30

    jp      loop

ext:
    ret

以上。