Three address code: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Robbot (overleg | bijdragen)
k Robotgeholpen doorverwijzing: Assembler - Koppeling(en) gewijzigd naar assembleertaal
Edoderoobot (overleg | bijdragen)
k →‎Implementatie: een van de - https://taaladvies.net/taal/advies/vraag/238/en_een_van_de/, replaced: één voor → een voor met AWB
 
Regel 29:
Wanneer er gebruik wordt gemaakt van '''quadruplets''' wordt de three address code gerepresenteerd door een lijst (array) waarvan iedere rij vier velden heeft (iedere rij vormt een quadruple). Eén veld bevat de operator, één veld bevat het (optionele) doel en twee velden bevatten de (optionele) argumenten.
 
Bij het gebruik van '''triplets''' wordt ieder statement voorgesteld door drie in plaats van vier velden: ééneen voor de operator en twee voor de optionele argumenten. Omdat three address code gebruik kan maken van een oneindig aantal tijdelijke variabelen kunnen we ieder resultaat van een bewerking opslaan in een tijdelijke variabele die overeenkomt met de positie van die bewerking in de array van three address statements. Dus: als de bewerking ''2*a'' op de derde rij in de array staat dan zit het resultaat van deze bewerking in de tijdelijke variabele t<sub>3</sub>.
 
De triplet-methode kost minder geheugen dan het gebruik van quadruplets. Het nadeel is dat als een instructie verplaatst wordt alle verwijzingen naar het resultaat van deze bewerking aangepast moeten worden. Dit maakt triplets ongeschikt als de three address code nog geoptimaliseerd wordt, wat meestal het geval is. In dat geval zijn indirecte triplets geschikter.