▁can ▁also ▁generate ▁re loc atable ▁machine ▁code ▁at ▁compile - time ▁or ▁link - time ▁or ▁even ▁binary ▁machine ▁code ▁at ▁run - time . ▁ ▁LL VM ▁supports ▁a ▁language - in dependent ▁instruction ▁set ▁and ▁type ▁system . ▁Each ▁instruction ▁is ▁in ▁static ▁single ▁assignment ▁form ▁( SS A ), ▁meaning ▁that ▁each ▁variable ▁( called ▁a ▁typed ▁register ) ▁is ▁assigned ▁once ▁and ▁then ▁fro zen . ▁This ▁helps ▁simplify ▁the ▁analysis ▁of ▁dependencies ▁among ▁variables . ▁LL VM ▁allows ▁code ▁to ▁be ▁compiled ▁stat ically , ▁as ▁it ▁is ▁under ▁the ▁traditional ▁G CC ▁system , ▁or ▁left ▁for ▁late - comp iling ▁from ▁the ▁IR ▁to ▁machine ▁code ▁via ▁just - in - time ▁compilation ▁( J IT ), ▁similar ▁to ▁Java . ▁The ▁type ▁system ▁consists ▁of ▁basic ▁types ▁such ▁as ▁integer ▁or ▁floating ▁point ▁numbers ▁and ▁five ▁derived ▁types : ▁pointers , ▁arrays , ▁vectors , ▁structures , ▁and ▁functions . ▁A ▁type ▁construct ▁in ▁a ▁concrete ▁language ▁can ▁be ▁represented ▁by ▁combining ▁these ▁basic ▁types ▁in ▁LL VM . ▁For ▁example , ▁a ▁class ▁in ▁C ++ ▁can ▁be ▁represented ▁by ▁a ▁mix ▁of ▁structures , ▁functions ▁and ▁arrays ▁of ▁function ▁pointers . ▁ ▁The ▁LL VM ▁J IT ▁compiler ▁can ▁optimize ▁un ne eded ▁static ▁branches ▁out ▁of ▁a ▁program ▁at ▁runtime , ▁and ▁thus ▁is ▁useful ▁for ▁partial ▁evaluation ▁in ▁cases ▁where ▁a ▁program ▁has ▁many ▁options , ▁most ▁of ▁which ▁can ▁easily ▁be ▁determined ▁un ne eded ▁in ▁a ▁specific ▁environment