Navigation
Synopsis Assembly language for Pico.
Examples The Pico/Compiler will translate Pico programs into the following assembly language.
module demo::lang::Pico::Assembly

import demo::lang::Pico::Abstract;

public data Instr =
       dclNat(PicoId Id)    // Reserve a memory location for a natural variable
     | dclStr(PicoId Id)    // Reserve a memory location for a string variable
     | pushNat(int intCon)  // Push integer constant on the stack
     | pushStr(str strCon)  // Push string constant on the stack
     | rvalue(PicoId Id)    // Push the value of a variable on the stack
     | lvalue(PicoId Id)    // Push the address of a variable on the stack
     | assign()             // Assign value on top, to variable at address top-1
     | add2()               // Replace top two stack values by their sum
     | sub2()               // Replace top two stack values by their difference
     | conc2()              // Replace top two stack values by their concatenation
     | label(str label)     // Associate a label with the next instruction
     | go(str  label)       // Go to instruction with given label
     | gotrue(str label)    // Go to instruction with given label, if top equals 0
     | gofalse(str label)   // Go to instruction with given label, if top not equal to 0
     ;
Is this page unclear, or have you spotted an error? Please add a comment below and help us to improve it. For all other questions and remarks, visit ask.rascal-mpl.org.