ducky.cc package

Module contents

class ducky.cc.ADD(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.AND(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BE(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BG(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BGE(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BL(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BLE(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.BNE(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.Block(name=None, comment=None)[source]

Bases: object

add_incoming(block)[source]
add_name(name)[source]
add_outgoing(block)[source]
connect(next)[source]
emit(inst)[source]
id = 0
instructions()[source]
materialize(code)[source]
class ducky.cc.CALL(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.CMP(left, right)[source]

Bases: ducky.cc.Instruction

class ducky.cc.Comment(comment)[source]

Bases: object

materialize()[source]
exception ducky.cc.CompilerError(location, msg)[source]

Bases: exceptions.Exception

class ducky.cc.ConstantValue(value)[source]

Bases: ducky.cc.NamedValue

class ducky.cc.Directive(directive)[source]

Bases: ducky.cc.Instruction

materialize()[source]
class ducky.cc.Expression(value=None, type=None, klass=<ExpressionClass.RVALUE: 2>)[source]

Bases: object

is_lvalue()[source]
is_mlvalue()[source]
is_rvalue()[source]
to_rvalue(visitor, preferred=None, keep=None)[source]
class ducky.cc.ExpressionClass[source]

Bases: enum.Enum

LVALUE = <ExpressionClass.LVALUE: 0>
MLVALUE = <ExpressionClass.MLVALUE: 1>
RVALUE = <ExpressionClass.RVALUE: 2>
class ducky.cc.Function(visitor, decl, ftype, args_types=None)[source]

Bases: object

args_block()[source]
block(*args, **kwargs)[source]
body_block()[source]
epilog_block()[source]
finish()[source]
header_block()[source]
materialize()[source]
prolog_block()[source]
class ducky.cc.HLT(isr)[source]

Bases: ducky.cc.Instruction

class ducky.cc.INC(reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.INT(isr)[source]

Bases: ducky.cc.Instruction

exception ducky.cc.IncompatibleTypesError(loc, t1, t2)[source]

Bases: ducky.cc.CompilerError

class ducky.cc.InlineAsm(code)[source]

Bases: ducky.cc.Instruction

materialize()[source]
class ducky.cc.Instruction(opcode, *operands)[source]

Bases: object

materialize()[source]
exception ducky.cc.IsAPointerError(loc, t)[source]

Bases: ducky.cc.CompilerError

class ducky.cc.J(label)[source]

Bases: ducky.cc.Instruction

class ducky.cc.LA(reg, value)[source]

Bases: ducky.cc.Instruction

class ducky.cc.LB(reg, addr)[source]

Bases: ducky.cc.Instruction

class ducky.cc.LI(reg, value)[source]

Bases: ducky.cc.Instruction

class ducky.cc.LS(reg, addr)[source]

Bases: ducky.cc.Instruction

class ducky.cc.LValueExpression(*args, **kwargs)[source]

Bases: ducky.cc.Expression

class ducky.cc.LW(reg, addr)[source]

Bases: ducky.cc.Instruction

class ducky.cc.MLValueExpression(*args, **kwargs)[source]

Bases: ducky.cc.Expression

class ducky.cc.MOV(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.MUL(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.MemorySlotStorage(symbol, label)[source]

Bases: ducky.cc.SymbolStorage

addrof(register, emit)[source]
name()[source]
class ducky.cc.MemorySlotValue(storage)[source]

Bases: ducky.cc.NamedValue

class ducky.cc.NOT(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.NamedValue(name)[source]

Bases: object

backing_register()[source]
can_register_backed()[source]
is_register_backed()[source]
exception ducky.cc.NotAPointerError(loc, t)[source]

Bases: ducky.cc.CompilerError

class ducky.cc.OR(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.POP(reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.PUSH(reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.RET[source]

Bases: ducky.cc.Instruction

class ducky.cc.RValueExpression(*args, **kwargs)[source]

Bases: ducky.cc.Expression

class ducky.cc.Register(rset, index)[source]

Bases: object

free()[source]
put()[source]
class ducky.cc.RegisterMemorySlotValue(register)[source]

Bases: ducky.cc.NamedValue

class ducky.cc.RegisterSet(fn)[source]

Bases: object

get(preferred=None, keep=None)[source]
restore_callee_saves(block)[source]
save_callee_saves(block)[source]
class ducky.cc.RegisterValue(register)[source]

Bases: ducky.cc.NamedValue

class ducky.cc.SHL(reg, ri)[source]

Bases: ducky.cc.Instruction

class ducky.cc.SHR(reg, ri)[source]

Bases: ducky.cc.Instruction

class ducky.cc.STB(addr, reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.STS(addr, reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.STW(addr, reg)[source]

Bases: ducky.cc.Instruction

class ducky.cc.SUB(*operands)[source]

Bases: ducky.cc.Instruction

class ducky.cc.Scope(visitor, parent=None)[source]

Bases: object

add(loc, symbol)[source]
get(name)[source]
scope_id = 0
class ducky.cc.StackSlotStorage(symbol, offset)[source]

Bases: ducky.cc.SymbolStorage

addrof(register, emit)[source]
name()[source]
class ducky.cc.StackSlotValue(storage)[source]

Bases: ducky.cc.NamedValue

class ducky.cc.StringConstantValue(value)[source]

Bases: ducky.cc.ConstantValue

class ducky.cc.Symbol(visitor, name, decl_type, extern=False, defined=False, const=False)[source]

Bases: object

exception ducky.cc.SymbolAlreadyDefinedError(loc, symbol)[source]

Bases: ducky.cc.CompilerError

exception ducky.cc.SymbolConflictError(location, msg)[source]

Bases: ducky.cc.CompilerError

class ducky.cc.SymbolStorage(symbol, register=None)[source]

Bases: object

acquire_register(register)[source]
addrof(reg, emit)[source]
has_register()[source]
name()[source]
release_register()[source]
spill_register(visitor)[source]
unspill_register(visitor, register)[source]
exception ducky.cc.SymbolUndefined(loc, symbol)[source]

Bases: ducky.cc.CompilerError

exception ducky.cc.UnableToImplicitCastError(loc, t1, t2)[source]

Bases: ducky.cc.CompilerError

exception ducky.cc.UndefinedStructMemberError(loc, s, m)[source]

Bases: ducky.cc.CompilerError

ducky.cc.dump_node(node)[source]
ducky.cc.show_node(node)[source]