def self_eval(expr, target, link, env, ctable): "Generate code that evaluates expr and places the result in target." if type(expr) == 'sym': return symbol(expr, target, link, env) elif type(expr) == 'char': return char(expr, target, link) else: return const(expr, target, link, ctable)
def const(expr, target, link, ctable): "Generate code that places a reference to a copy of expr in target." c = Code(clobbers=[target]) id = ctable.id(expr) c.tack_on('mov_%s r%s, #%s' % (type(expr), target, id)) return end_with_link(c, link)