<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Parrot - Assignment Opcodes</title> <link rel="stylesheet" type="text/css" href="../../../resources/parrot.css" media="all"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div id="wrapper"> <div id="header"> <a href="http://www.parrot.org"> <img border=0 src="../../../resources/parrot_logo.png" id="logo" alt="parrot"> </a> </div> <!-- "header" --> <div id="divider"></div> <div id="mainbody"> <div id="breadcrumb"> <a href="../../../html/index.html">Home</a> » <a href="../../../html/ops.html">Opcodes</a> » Assignment Opcodes </div> <h1><a name="NAME" >NAME</a></h1> <p>set.ops - Assignment Opcodes</p> <h1><a name="DESCRIPTION" >DESCRIPTION</a></h1> <p>These operations all set registers to various values.</p> <p>When making changes to any ops file, run <code>make bootstrap-ops</code> to regenerate all generated ops files.</p> <dl> <dt><a name="clone(out_STR,_in_STR)" ><b>clone</b>(out STR, in STR)</a></dt> Effectively the same as set $1, $2, except that if $2 is a null STRING, $1 gets a new empty string instead. <dt><a name="set(out_INT,_in_INT)" ><b>set</b>(out INT, in INT)</a></dt> <dt><a name="set(out_INT,_in_NUM)" ><b>set</b>(out INT, in NUM)</a></dt> A floating-point number is truncated (rounded toward zero) when assigned to an integer register. <dt><a name="set(out_INT,_invar_PMC)" ><b>set</b>(out INT, invar PMC)</a></dt> <dt><a name="set(out_INT,_invar_PMC)" ><b>set</b>(out INT, invar PMC)</a></dt> <dt><a name="set(out_INT,_in_STR)" ><b>set</b>(out INT, in STR)</a></dt> <dt><a name="set(out_NUM,_in_INT)" ><b>set</b>(out NUM, in INT)</a></dt> <dt><a name="set(out_NUM,_in_NUM)" ><b>set</b>(out NUM, in NUM)</a></dt> <dt><a name="set(out_NUM,_invar_PMC)" ><b>set</b>(out NUM, invar PMC)</a></dt> <dt><a name="set(out_NUM,_in_STR)" ><b>set</b>(out NUM, in STR)</a></dt> <dt><a name="set(invar_PMC,_in_INT)" ><b>set</b>(invar PMC, in INT)</a></dt> <dt><a name="set(invar_PMC,_in_NUM)" ><b>set</b>(invar PMC, in NUM)</a></dt> <dt><a name="set(out_PMC,_invar_PMC)" ><b>set</b>(out PMC, invar PMC)</a></dt> <dt><a name="set(invar_PMC,_invar_STR)" ><b>set</b>(invar PMC, invar STR)</a></dt> <dt><a name="set(out_STR,_in_INT)" ><b>set</b>(out STR, in INT)</a></dt> <dt><a name="set(out_STR,_in_NUM)" ><b>set</b>(out STR, in NUM)</a></dt> <dt><a name="set(out_STR,_invar_PMC)" ><b>set</b>(out STR, invar PMC)</a></dt> <dt><a name="set(out_STR,_inconst_STR)" ><b>set</b>(out STR, inconst STR)</a></dt> <dt><a name="set(out_STR,_invar_STR)" ><b>set</b>(out STR, invar STR)</a></dt> <dt><a name="set(out_PMC,_inconst_PMC)" ><b>set</b>(out PMC, inconst PMC)</a></dt> <dt><a name="set(invar_PMC,_inconst_STR)" ><b>set</b>(invar PMC, inconst STR)</a></dt> Set $1 to $2.</dl> <h2><a name="PMC_assignment_operations:_Px_=_x" >PMC assignment operations: Px = x</a></h2> <dl> <dt><a name="assign(invar_PMC,_in_INT)" ><b>assign</b>(invar PMC, in INT)</a></dt> <dt><a name="assign(invar_PMC,_in_NUM)" ><b>assign</b>(invar PMC, in NUM)</a></dt> Assign a new value $2, to PMC $1. Same as the equivalent <b>set</b> opcodes. <dt><a name="assign(invar_PMC,_in_STR)" ><b>assign</b>(invar PMC, in STR)</a></dt> <dt><a name="assign(invar_PMC,_invar_PMC)" ><b>assign</b>(invar PMC, invar PMC)</a></dt> Assign a new value $2, to PMC $1 by copying the value. <dt><a name="assign(out_STR,_in_STR)" ><b>assign</b>(out STR, in STR)</a></dt> Assign a new value to a string by reusing the string header. <dt><a name="setref(invar_PMC,_invar_PMC)" ><b>setref</b>(invar PMC, invar PMC)</a></dt> Make $1 refer to $2 by calling <code>set_pmc</code>. <dt><a name="deref(out_PMC,_invar_PMC)" ><b>deref</b>(out PMC, invar PMC)</a></dt> Not strictly an assignment operation: Put into $1 the PMC that the reference PMC $2 refers to.</dl> <h2><a name="Keyed_set_operations:_Px[_INTKEY_]_=_Bx" >Keyed set operations: Px[ INTKEY ] = Bx</a></h2> <dl> <dt><a name="set(invar_PMC,_in_INTKEY,_in_INT)" ><b>set</b>(invar PMC, in INTKEY, in INT)</a></dt> <dt><a name="set(invar_PMC,_in_INTKEY,_in_NUM)" ><b>set</b>(invar PMC, in INTKEY, in NUM)</a></dt> <dt><a name="set(invar_PMC,_in_INTKEY,_in_STR)" ><b>set</b>(invar PMC, in INTKEY, in STR)</a></dt> <dt><a name="set(invar_PMC,_in_INTKEY,_invar_PMC)" ><b>set</b>(invar PMC, in INTKEY, invar PMC)</a></dt> </dl> <h2><a name="Keyed_get_operations:_Ax_=_Px[_INTKEY_]" >Keyed get operations: Ax = Px[ INTKEY ]</a></h2> <dl> <dt><a name="set(out_INT,_invar_PMC,_in_INTKEY)" ><b>set</b>(out INT, invar PMC, in INTKEY)</a></dt> <dt><a name="set(out_NUM,_invar_PMC,_in_INTKEY)" ><b>set</b>(out NUM, invar PMC, in INTKEY)</a></dt> <dt><a name="set(out_STR,_invar_PMC,_in_INTKEY)" ><b>set</b>(out STR, invar PMC, in INTKEY)</a></dt> <dt><a name="set(out_PMC,_invar_PMC,_in_INTKEY)" ><b>set</b>(out PMC, invar PMC, in INTKEY)</a></dt> </dl> <h2><a name="Keyed_set_operations:_Px[_KEY_]_=_Bx" >Keyed set operations: Px[ KEY ] = Bx</a></h2> <dl> <dt><a name="set(invar_PMC,_in_KEY,_in_INT)" ><b>set</b>(invar PMC, in KEY, in INT)</a></dt> <dt><a name="set(invar_PMC,_in_KEY,_in_NUM)" ><b>set</b>(invar PMC, in KEY, in NUM)</a></dt> <dt><a name="set(invar_PMC,_in_KEY,_in_STR)" ><b>set</b>(invar PMC, in KEY, in STR)</a></dt> <dt><a name="set(invar_PMC,_in_KEY,_invar_PMC)" ><b>set</b>(invar PMC, in KEY, invar PMC)</a></dt> </dl> <h2><a name="Keyed_get_operations:_Ax_=_Px[_KEY_]" >Keyed get operations: Ax = Px[ KEY ]</a></h2> <dl> <dt><a name="set(out_INT,_invar_PMC,_in_KEY)" ><b>set</b>(out INT, invar PMC, in KEY)</a></dt> <dt><a name="set(out_NUM,_invar_PMC,_in_KEY)" ><b>set</b>(out NUM, invar PMC, in KEY)</a></dt> <dt><a name="set(out_STR,_invar_PMC,_in_KEY)" ><b>set</b>(out STR, invar PMC, in KEY)</a></dt> <dt><a name="set(out_PMC,_invar_PMC,_in_KEY)" ><b>set</b>(out PMC, invar PMC, in KEY)</a></dt> <dt><a name="clone(out_PMC,_invar_PMC)" ><b>clone</b>(out PMC, invar PMC)</a></dt> Makes a copy of the PMC in $2 and puts it in $1. <dt><a name="clone(out_PMC,_invar_PMC,_in_PMC)" ><b>clone</b>(out PMC, invar PMC, in PMC)</a></dt> Makes a copy of the PMC in $2 and puts it in $1, using the arguments in $3. <dt><a name="copy(inout_PMC,_invar_PMC)" ><b>copy</b>(inout PMC, invar PMC)</a></dt> Morphs the PMC in $1 to the type of the PMC in $2, then assigns $2 to $1.</dl> <h2><a name="Register_operations" >Register operations</a></h2> <p>These operations effect entire sets of registers.</p> <dl> <dt><a name="null(out_INT)" ><b>null</b>(out INT)</a></dt> <dt><a name="null(out_NUM)" ><b>null</b>(out NUM)</a></dt> Set register $1 to zero. <dt><a name="null(out_STR)" ><b>null</b>(out STR)</a></dt> Set register $1 to a NULL string value. <dt><a name="null(out_PMC)" ><b>null</b>(out PMC)</a></dt> Set register $1 to PMCNULL.</dl> <h1><a name="COPYRIGHT" >COPYRIGHT</a></h1> <p>Copyright (C) 2001-2011, Parrot Foundation.</p> <h1><a name="LICENSE" >LICENSE</a></h1> <p>This program is free software. It is subject to the same license as the Parrot interpreter itself.</p> </div> <!-- "mainbody" --> <div id="divider"></div> <div id="footer"> Copyright © 2002-2011, Parrot Foundation. </div> </div> <!-- "wrapper" --> </body> </html>