about summary refs log blame commit diff stats
path: root/apps/ex3.mu
blob: d7e731409ccde200e9b359320cb277133f4aac30 (plain) (tree)
1
2
3
4
5
6
7
8
9








                                                                   

                               







                          
               
 
# Add the first 10 numbers, and return the result in the exit code.
#
# To run:
#   $ ./translate_mu apps/browse.mu
#   $ ./a.elf
# Expected result:
#   $ echo $?
#   55

fn main -> _/ebx: int {
  var result/ebx: int <- copy 0
  var i/eax: int <- copy 1
  {
    compare i, 0xa
    break-if->
    result <- add i
    i <- increment
    loop
  }
  return result
}
/ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
c{0: 0 (((i integer)) <- ((copy)) ((0 literal))) -- nil
c{0: 1 (((done? boolean)) <- ((greater-or-equal)) ((i integer)) ((10 literal))) -- ((open 1))
c{0: 2 (((break-if)) ((done? boolean))) -- ((open 1))
c{0: 3 (((1 integer)) <- ((add)) ((i integer)) ((1 literal))) -- ((open 1))
c{0: 4 (((loop))) -- ((open 1))
c{1: 0 ✓ (((i integer)) <- ((copy)) ((0 literal)))
c{1: 1 ✓ (((done? boolean)) <- ((greater-or-equal)) ((i integer)) ((10 literal)))
c{1: 2 X (((break-if)) ((done? boolean))) => (((jump-if)) ((done? boolean)) ((2 offset)))
c{1: 3 ✓ (((1 integer)) <- ((add)) ((i integer)) ((1 literal)))
c{1: 4 X (((loop))) => (((jump)) ((-4 offset)))
c{0: 0 (((sleep)) ((for-some-cycles literal)) ((10 literal))) -- nil
c{1: 0 ✓ (((sleep)) ((for-some-cycles literal)) ((10 literal)))
cn0: convert-names in baseline
cn0: (((i integer)) <- ((copy)) ((0 literal))) nil nil
cn0: checking arg ((0 literal))
cn0: checking oarg ((i integer))
maybe-add: ((i integer))
cn0: location for oarg ((i integer)): 1
cn0: (((done? boolean)) <- ((greater-or-equal)) ((i integer)) ((10 literal))) ((i 1)) nil
cn0: checking arg ((i integer))
maybe-add: ((i integer))
cn0: checking arg ((10 literal))
cn0: checking oarg ((done? boolean))
maybe-add: ((done? boolean))
cn0: location for oarg ((done? boolean)): 2
cn0: (((jump-if)) ((done? boolean)) ((2 offset))) ((done? 2) (i 1)) nil
cn0: checking arg ((done? boolean))
maybe-add: ((done? boolean))
cn0: checking arg ((2 offset))
cn0: (((1 integer)) <- ((add)) ((i integer)) ((1 literal))) ((done? 2) (i 1)) nil
cn0: checking arg ((i integer))
maybe-add: ((i integer))
cn0: checking arg ((1 literal))
cn0: checking oarg ((1 integer))
maybe-add: ((1 integer))
cn0: (((jump)) ((-4 offset))) ((done? 2) (i 1)) nil
cn0: checking arg ((-4 offset))
cn0: convert-names in f1
cn0: (((sleep)) ((for-some-cycles literal)) ((10 literal))) nil nil
cn0: checking arg ((for-some-cycles literal))
cn0: checking arg ((10 literal))
cn1: (((1 integer)) <- ((copy)) ((0 literal)))
cn1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
cn1: (((jump-if)) ((2 boolean)) ((2 offset)))
cn1: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
cn1: (((jump)) ((-4 offset)))
cn1: (((sleep)) ((for-some-cycles literal)) ((10 literal)))
schedule: baseline
run: baseline 0: (((1 integer)) <- ((copy)) ((0 literal)))
run: baseline 0: 0 => ((1 integer))
mem: ((1 integer)): 1 <= 0
schedule: scheduling baseline for further processing
schedule: f1
run: f1 0: (((sleep)) ((for-some-cycles literal)) ((10 literal)))
run: f1 0: sleeping until 12
schedule: pushing f1 to sleep queue
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 0
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 0
run: baseline 3: 1 => ((1 integer))
mem: ((1 integer)): 1 <= 1
schedule: scheduling baseline for further processing
schedule: routine timed out
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 1
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 1
run: baseline 3: 2 => ((1 integer))
mem: ((1 integer)): 1 <= 2
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 2
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 2
run: baseline 3: 3 => ((1 integer))
mem: ((1 integer)): 1 <= 3
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 3
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 3
run: baseline 3: 4 => ((1 integer))
mem: ((1 integer)): 1 <= 4
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 4
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 4
run: baseline 3: 5 => ((1 integer))
mem: ((1 integer)): 1 <= 5
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 5
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 5
run: baseline 3: 6 => ((1 integer))
mem: ((1 integer)): 1 <= 6
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 6
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 6
run: baseline 3: 7 => ((1 integer))
mem: ((1 integer)): 1 <= 7
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 7
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 7
run: baseline 3: 8 => ((1 integer))
mem: ((1 integer)): 1 <= 8
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 8
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 8
run: baseline 3: 9 => ((1 integer))
mem: ((1 integer)): 1 <= 9
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 9
run: baseline 1: nil => ((2 boolean))
mem: ((2 boolean)): 2 <= nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => nil
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 3: (((1 integer)) <- ((add)) ((1 integer)) ((1 literal)))
mem: ((1 integer)) => 9
run: baseline 3: 10 => ((1 integer))
mem: ((1 integer)): 1 <= 10
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 4: (((jump)) ((-4 offset)))
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 1: (((2 boolean)) <- ((greater-or-equal)) ((1 integer)) ((10 literal)))
mem: ((1 integer)) => 10
run: baseline 1: t => ((2 boolean))
mem: ((2 boolean)): 2 <= t
schedule: scheduling baseline for further processing
schedule: baseline
run: baseline 2: (((jump-if)) ((2 boolean)) ((2 offset)))
mem: ((2 boolean)) => t
schedule: scheduling baseline for further processing
schedule: baseline
schedule: done with routine nil