úΗ,/      !"#$%&'()*+,-.None-345DA program is a series of , each associated with a label. A series of v is a set of assembly instructions that ends with some kind of closing operation, such as a jump, branch or return. The = monad lets us create labels by name and refer to them later.The u free monad is really just a convenient way to describe a list that must result in a closing operation at the end.When we compile a program, the result is a closed Hoopl Graph and the label corresponding to the requested entry label name.       None !"34579N !"#$%&'()*+,-.Number of machine registersOffset of the spill stack!Size of spilled register in bytes"Whether to use allocation verifierLabel of graph entry block Program graph !"#$%&'()*+,-. !"#$%&'()*+,-. !"#$%&'()*+,-./      !"#$%&'()*+,-./01linea_6aNYMK5IBKHL1B0qUrliY4LinearScan.Hoopl.DSLLinearScan.HooplProgramProgramF FreeBlock labelEntry labelBodyEndNodeBodyNodeNodesAsmLabelsEnv SpillStackstackPtr stackSlotSize stackSlots newSpillStack getStackSlotgetLabel nodesToListbodyNodeendNodelabeljumpcompileNodeVNodeCO getNodeCONodeOO getNodeOONodeOC getNodeOC NodeAllocisCallisBranchretargetBranch mkLabelOpmkJumpOp getReferences setRegisters mkMoveOps mkSaveOps mkRestoreOps op1ToString blockInfoopInfo allocateHoopl