X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=versie-1%2Fan_variabelen.tex;fp=versie-1%2Fan_variabelen.tex;h=9e46b6b7e62b54113eda2c46239a6006ca282e71;hb=4272348e58a32a4433614c55ea9ef650fe7b4f60;hp=0000000000000000000000000000000000000000;hpb=3c6cc0ecaf6173ed11e218bb96fa4ab52bc22233;p=sec1415.git diff --git a/versie-1/an_variabelen.tex b/versie-1/an_variabelen.tex new file mode 100644 index 0000000..9e46b6b --- /dev/null +++ b/versie-1/an_variabelen.tex @@ -0,0 +1,16 @@ +\subsection{Variabelen} +Variabelen in \textit{While} worden op een totaal andere manier opgeslagen in +\textit{Piet}. Waar variabelen in while een naam hebben, hebben variabelen in +\textit{Piet} een nummer en kunnen ze door het aanroepen van een functie +bovenaan gezet worden. De functie kan precies $1$ of precies $2$ variabelen +boven aan de stack zetten. Hetzelfde kan voor de variabelen posities $a$ en $b$ +waarbij $b>a$. De piet' code om de variabele boven aan te krijgen is dan als +volgt: $push b-1, push b-a, roll, push b, push b, push b*2, sub, roll$.\\ +Allereerst wordt $b-1$ op de stack gedrukt, dit bepaalt de diepte van de eerste +$roll$ en zorgt ervoor dat $a$ tegen $b$ aan komt te liggen. $b-a$ wordt dat op +de stack gepushed, dit is het verschil tussen $a$ en $b$ en bepaalt het aantal +rolls er gedaan wordt op de stack, dit zijn er precies genoeg om $a$ bij $b$ te +plaatsen. Vervolgens moeten ze nog naar boven en dat kan door $-b+1$ stappen te +rollen met een diepte van $b$. de eerste $push b$ bepaalt de diepje en +vervolgens wordt met $push b, push b*2-1, sub$ $b-1$ op de stack gepushed om te +rollen en $a$ en $b$ bovenaan te plaatsen.