HTTP/1.1 -1 Read error in cache disk data: SuccessContent-Type: text/plain; charset="utf-8" Last-Modified: Sat, 22 Jan 2022 04:40:19 GMT Content-length: 2133 Connection: Close Proxy-Connection: Close X-Cache: HIT from web1.osuosl.org Server: ProxyTrack 0.5 (HTTrack 3.49.2) = Lorito Ops = This page describes a current approximation of Lorito's ops. It is expected to converge with the eventual implementation as the number of edits increases. === Control Flow (5 ops) === * noop - do nothing * call - call a sub, method or vtable function * end - halt the interpreter cleanly * goto - unconditional branch * if - conditional branch === Value (12 ops) === The Value, Math, Comparison and Object ops are designed to minimize op proliferation. Apart from type coercion via coerce_[ins]_[ins], all ops require that each of their arguments be of the same type. * coerce_[ins]_[ins] - coerce registers between primitive types (objects will provide the same functionality via vtable functions) * load_const_[ins] - load a constant into a register * set_[ins] - copy the contents of one register into another of the same type === Math (14 ops) === * add_[in] - add two registers of the same type * sub_[in] - subtract two registers of the same type * mul_[in] - multiply two registers of the same type * div_[in] - divide two registers of the same type * mod_[in] - return the remainder of $2/$3 * and - bitwise and of an int * or - bitwise or of an int * not - bitwise not of an int * xor - bitwise exclusive or of an int === Comparison (2 ops) === * cmp_[in] - a <=> b between register of the same type === Objects (5 ops) === * new - create a new object * new_[ip] - create a new object with an initializer * get_attr - retrieve an object attribute's value * set_attr - set an object attribute's value === Other (1 op) === * loadlib - load a (dll/so, pbc or HLL?) library === I/O (4 ops, bootstrapping only) === These four ops are only intended for use during Lorito's implementation phase. Once Lorito matures to the point where we have a fixed set of ops and have tools that can generate Lorito, we expect these ops to become methods on a FileHandle. * read - read from stdin * write - write to stdout * say - write to stdout and append a newline * gripe - write to stderr