ducky.cpu.instructions module

class ducky.cpu.instructions.ADD(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'add'
opcode = 28
operands = ['r', 'ri']
class ducky.cpu.instructions.AND(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'and'
opcode = 34
operands = ['r', 'ri']
class ducky.cpu.instructions.BE(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'be'
operands = ['ri']
class ducky.cpu.instructions.BG(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bg'
operands = ['ri']
class ducky.cpu.instructions.BGE(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bge'
operands = ['ri']
class ducky.cpu.instructions.BL(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bl'
operands = ['ri']
class ducky.cpu.instructions.BLE(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'ble'
operands = ['ri']
class ducky.cpu.instructions.BNE(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bne'
operands = ['ri']
class ducky.cpu.instructions.BNO(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bno'
operands = ['ri']
class ducky.cpu.instructions.BNS(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bns'
operands = ['ri']
class ducky.cpu.instructions.BNZ(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bnz'
operands = ['ri']
class ducky.cpu.instructions.BO(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bo'
operands = ['ri']
class ducky.cpu.instructions.BS(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bs'
operands = ['ri']
class ducky.cpu.instructions.BZ(instruction_set)[source]

Bases: ducky.cpu.instructions._BRANCH

mnemonic = 'bz'
operands = ['ri']
class ducky.cpu.instructions.CALL(instruction_set)[source]

Bases: ducky.cpu.instructions._JUMP

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'call'
opcode = 15
operands = ['ri']
class ducky.cpu.instructions.CAS(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingA

static execute(core, inst)[source]
mnemonic = 'cas'
opcode = 7
operands = ['r', 'r', 'r']
class ducky.cpu.instructions.CLI(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'cli'
opcode = 17
operands = []
class ducky.cpu.instructions.CMP(instruction_set)[source]

Bases: ducky.cpu.instructions._CMP

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'cmp'
opcode = 47
operands = ['r', 'ri']
class ducky.cpu.instructions.CMPU(instruction_set)[source]

Bases: ducky.cpu.instructions._CMP

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'cmpu'
opcode = 48
operands = ['r', 'ri']
class ducky.cpu.instructions.CTR(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_R

encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'ctr'
opcode = 60
operands = ['r', 'r']
class ducky.cpu.instructions.CTW(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_R

encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'ctw'
opcode = 61
operands = ['r', 'r']
class ducky.cpu.instructions.DEC(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'dec'
opcode = 27
operands = ['r']
class ducky.cpu.instructions.DIV(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'div'
opcode = 31
operands = ['r', 'ri']
class ducky.cpu.instructions.Descriptor(instruction_set)[source]

Bases: object

_expand_operands()[source]
static _match_operand_type(allowed, operand)[source]
static assemble_operands(ctx, inst, operands)[source]
classmethod disassemble_mnemonic(inst)[source]
static disassemble_operands(logger, inst)[source]
static emit_instruction(ctx, desc, operands)[source]
encoding

alias of EncodingR

static execute(core, inst)[source]
static fill_reloc_slot(inst, slot)[source]
inst_aligned = False
static jit(core, inst)[source]
mnemonic = None
opcode = None
operands = None
relative_address = False
class ducky.cpu.instructions.Descriptor_R(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingR

operands = 'r'
class ducky.cpu.instructions.Descriptor_RI(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingI

operands = 'ri'
class ducky.cpu.instructions.Descriptor_R_I(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingI

operands = 'r,i'
class ducky.cpu.instructions.Descriptor_R_R(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingR

operands = 'r,r'
class ducky.cpu.instructions.Descriptor_R_RI(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingR

operands = 'r,ri'
class ducky.cpu.instructions.DuckyInstructionSet[source]

Bases: ducky.cpu.instructions.InstructionSet

instruction_set_id = 0
instructions = [<ducky.cpu.instructions.NOP object>, <ducky.cpu.instructions.INT object>, <ducky.cpu.instructions.IPI object>, <ducky.cpu.instructions.RETINT object>, <ducky.cpu.instructions.CALL object>, <ducky.cpu.instructions.RET object>, <ducky.cpu.instructions.CLI object>, <ducky.cpu.instructions.STI object>, <ducky.cpu.instructions.HLT object>, <ducky.cpu.instructions.RST object>, <ducky.cpu.instructions.IDLE object>, <ducky.cpu.instructions.PUSH object>, <ducky.cpu.instructions.POP object>, <ducky.cpu.instructions.INC object>, <ducky.cpu.instructions.DEC object>, <ducky.cpu.instructions.ADD object>, <ducky.cpu.instructions.SUB object>, <ducky.cpu.instructions.CMP object>, <ducky.cpu.instructions.J object>, <ducky.cpu.instructions.AND object>, <ducky.cpu.instructions.OR object>, <ducky.cpu.instructions.XOR object>, <ducky.cpu.instructions.NOT object>, <ducky.cpu.instructions.SHL object>, <ducky.cpu.instructions.SHR object>, <ducky.cpu.instructions.SHRS object>, <ducky.cpu.instructions.LW object>, <ducky.cpu.instructions.LS object>, <ducky.cpu.instructions.LB object>, <ducky.cpu.instructions.LI object>, <ducky.cpu.instructions.LIU object>, <ducky.cpu.instructions.LA object>, <ducky.cpu.instructions.STW object>, <ducky.cpu.instructions.STS object>, <ducky.cpu.instructions.STB object>, <ducky.cpu.instructions.MOV object>, <ducky.cpu.instructions.SWP object>, <ducky.cpu.instructions.MUL object>, <ducky.cpu.instructions.DIV object>, <ducky.cpu.instructions.UDIV object>, <ducky.cpu.instructions.MOD object>, <ducky.cpu.instructions.CMPU object>, <ducky.cpu.instructions.CAS object>, <ducky.cpu.instructions.SIS object>, <ducky.cpu.instructions.BE object>, <ducky.cpu.instructions.BNE object>, <ducky.cpu.instructions.BZ object>, <ducky.cpu.instructions.BNZ object>, <ducky.cpu.instructions.BO object>, <ducky.cpu.instructions.BNO object>, <ducky.cpu.instructions.BS object>, <ducky.cpu.instructions.BNS object>, <ducky.cpu.instructions.BG object>, <ducky.cpu.instructions.BGE object>, <ducky.cpu.instructions.BL object>, <ducky.cpu.instructions.BLE object>, <ducky.cpu.instructions.SETE object>, <ducky.cpu.instructions.SETNE object>, <ducky.cpu.instructions.SETZ object>, <ducky.cpu.instructions.SETNZ object>, <ducky.cpu.instructions.SETO object>, <ducky.cpu.instructions.SETNO object>, <ducky.cpu.instructions.SETS object>, <ducky.cpu.instructions.SETNS object>, <ducky.cpu.instructions.SETG object>, <ducky.cpu.instructions.SETGE object>, <ducky.cpu.instructions.SETL object>, <ducky.cpu.instructions.SETLE object>, <ducky.cpu.instructions.SELE object>, <ducky.cpu.instructions.SELNE object>, <ducky.cpu.instructions.SELZ object>, <ducky.cpu.instructions.SELNZ object>, <ducky.cpu.instructions.SELO object>, <ducky.cpu.instructions.SELNO object>, <ducky.cpu.instructions.SELS object>, <ducky.cpu.instructions.SELNS object>, <ducky.cpu.instructions.SELG object>, <ducky.cpu.instructions.SELGE object>, <ducky.cpu.instructions.SELL object>, <ducky.cpu.instructions.SELLE object>, <ducky.cpu.instructions.LPM object>, <ducky.cpu.instructions.CTR object>, <ducky.cpu.instructions.CTW object>, <ducky.cpu.instructions.FPTC object>]
opcode_desc_map = {<DuckyOpcodes.NOP: 0>: <ducky.cpu.instructions.NOP object>, <DuckyOpcodes.LW: 1>: <ducky.cpu.instructions.LW object>, <DuckyOpcodes.LS: 2>: <ducky.cpu.instructions.LS object>, <DuckyOpcodes.LB: 3>: <ducky.cpu.instructions.LB object>, <DuckyOpcodes.STW: 4>: <ducky.cpu.instructions.STW object>, <DuckyOpcodes.STS: 5>: <ducky.cpu.instructions.STS object>, <DuckyOpcodes.STB: 6>: <ducky.cpu.instructions.STB object>, <DuckyOpcodes.CAS: 7>: <ducky.cpu.instructions.CAS object>, <DuckyOpcodes.LA: 8>: <ducky.cpu.instructions.LA object>, <DuckyOpcodes.LI: 9>: <ducky.cpu.instructions.LI object>, <DuckyOpcodes.LIU: 10>: <ducky.cpu.instructions.LIU object>, <DuckyOpcodes.MOV: 11>: <ducky.cpu.instructions.MOV object>, <DuckyOpcodes.SWP: 12>: <ducky.cpu.instructions.SWP object>, <DuckyOpcodes.INT: 13>: <ducky.cpu.instructions.INT object>, <DuckyOpcodes.RETINT: 14>: <ducky.cpu.instructions.RETINT object>, <DuckyOpcodes.CALL: 15>: <ducky.cpu.instructions.CALL object>, <DuckyOpcodes.RET: 16>: <ducky.cpu.instructions.RET object>, <DuckyOpcodes.CLI: 17>: <ducky.cpu.instructions.CLI object>, <DuckyOpcodes.STI: 18>: <ducky.cpu.instructions.STI object>, <DuckyOpcodes.RST: 19>: <ducky.cpu.instructions.RST object>, <DuckyOpcodes.HLT: 20>: <ducky.cpu.instructions.HLT object>, <DuckyOpcodes.IDLE: 21>: <ducky.cpu.instructions.IDLE object>, <DuckyOpcodes.LPM: 22>: <ducky.cpu.instructions.LPM object>, <DuckyOpcodes.IPI: 23>: <ducky.cpu.instructions.IPI object>, <DuckyOpcodes.PUSH: 24>: <ducky.cpu.instructions.PUSH object>, <DuckyOpcodes.POP: 25>: <ducky.cpu.instructions.POP object>, <DuckyOpcodes.INC: 26>: <ducky.cpu.instructions.INC object>, <DuckyOpcodes.DEC: 27>: <ducky.cpu.instructions.DEC object>, <DuckyOpcodes.ADD: 28>: <ducky.cpu.instructions.ADD object>, <DuckyOpcodes.SUB: 29>: <ducky.cpu.instructions.SUB object>, <DuckyOpcodes.MUL: 30>: <ducky.cpu.instructions.MUL object>, <DuckyOpcodes.DIV: 31>: <ducky.cpu.instructions.DIV object>, <DuckyOpcodes.UDIV: 32>: <ducky.cpu.instructions.UDIV object>, <DuckyOpcodes.MOD: 33>: <ducky.cpu.instructions.MOD object>, <DuckyOpcodes.AND: 34>: <ducky.cpu.instructions.AND object>, <DuckyOpcodes.OR: 35>: <ducky.cpu.instructions.OR object>, <DuckyOpcodes.XOR: 36>: <ducky.cpu.instructions.XOR object>, <DuckyOpcodes.NOT: 37>: <ducky.cpu.instructions.NOT object>, <DuckyOpcodes.SHL: 38>: <ducky.cpu.instructions.SHL object>, <DuckyOpcodes.SHR: 39>: <ducky.cpu.instructions.SHR object>, <DuckyOpcodes.SHRS: 40>: <ducky.cpu.instructions.SHRS object>, <DuckyOpcodes.J: 46>: <ducky.cpu.instructions.J object>, <DuckyOpcodes.CMP: 47>: <ducky.cpu.instructions.CMP object>, <DuckyOpcodes.CMPU: 48>: <ducky.cpu.instructions.CMPU object>, <DuckyOpcodes.SET: 49>: <ducky.cpu.instructions.SETLE object>, <DuckyOpcodes.BRANCH: 50>: <ducky.cpu.instructions.BLE object>, <DuckyOpcodes.SELECT: 51>: <ducky.cpu.instructions.SELLE object>, <DuckyOpcodes.CTR: 60>: <ducky.cpu.instructions.CTR object>, <DuckyOpcodes.CTW: 61>: <ducky.cpu.instructions.CTW object>, <DuckyOpcodes.FPTC: 62>: <ducky.cpu.instructions.FPTC object>, <DuckyOpcodes.SIS: 63>: <ducky.cpu.instructions.SIS object>}
opcode_encoding_map = {<DuckyOpcodes.NOP: 0>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LW: 1>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.LS: 2>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.LB: 3>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STW: 4>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STS: 5>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.STB: 6>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CAS: 7>: <class 'ducky.cpu.instructions.EncodingA'>, <DuckyOpcodes.LA: 8>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LI: 9>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LIU: 10>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.MOV: 11>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SWP: 12>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INT: 13>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RETINT: 14>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CALL: 15>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RET: 16>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CLI: 17>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.STI: 18>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.RST: 19>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.HLT: 20>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.IDLE: 21>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.LPM: 22>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.IPI: 23>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.PUSH: 24>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.POP: 25>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INC: 26>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.DEC: 27>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.ADD: 28>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SUB: 29>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.MUL: 30>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.DIV: 31>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.UDIV: 32>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.MOD: 33>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.AND: 34>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.OR: 35>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.XOR: 36>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.NOT: 37>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHL: 38>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHR: 39>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHRS: 40>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.J: 46>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.CMP: 47>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CMPU: 48>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SET: 49>: <class 'ducky.cpu.instructions.EncodingS'>, <DuckyOpcodes.BRANCH: 50>: <class 'ducky.cpu.instructions.EncodingC'>, <DuckyOpcodes.SELECT: 51>: <class 'ducky.cpu.instructions.EncodingS'>, <DuckyOpcodes.CTR: 60>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.CTW: 61>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.FPTC: 62>: <class 'ducky.cpu.instructions.EncodingI'>, <DuckyOpcodes.SIS: 63>: <class 'ducky.cpu.instructions.EncodingI'>}
opcodes

alias of DuckyOpcodes

class ducky.cpu.instructions.DuckyOpcodes[source]

Bases: enum.IntEnum

ADD = 28
AND = 34
BRANCH = 50
CALL = 15
CAS = 7
CLI = 17
CMP = 47
CMPU = 48
CTR = 60
CTW = 61
DEC = 27
DIV = 31
FPTC = 62
HLT = 20
IDLE = 21
INC = 26
INT = 13
IPI = 23
J = 46
LA = 8
LB = 3
LI = 9
LIU = 10
LPM = 22
LS = 2
LW = 1
MOD = 33
MOV = 11
MUL = 30
NOP = 0
NOT = 37
OR = 35
POP = 25
PUSH = 24
RET = 16
RETINT = 14
RST = 19
SELECT = 51
SET = 49
SHL = 38
SHR = 39
SHRS = 40
SIS = 63
STB = 6
STI = 18
STS = 5
STW = 4
SUB = 29
SWP = 12
UDIV = 32
XOR = 36
_member_map_ = OrderedDict([('NOP', <DuckyOpcodes.NOP: 0>), ('LW', <DuckyOpcodes.LW: 1>), ('LS', <DuckyOpcodes.LS: 2>), ('LB', <DuckyOpcodes.LB: 3>), ('STW', <DuckyOpcodes.STW: 4>), ('STS', <DuckyOpcodes.STS: 5>), ('STB', <DuckyOpcodes.STB: 6>), ('CAS', <DuckyOpcodes.CAS: 7>), ('LA', <DuckyOpcodes.LA: 8>), ('LI', <DuckyOpcodes.LI: 9>), ('LIU', <DuckyOpcodes.LIU: 10>), ('MOV', <DuckyOpcodes.MOV: 11>), ('SWP', <DuckyOpcodes.SWP: 12>), ('INT', <DuckyOpcodes.INT: 13>), ('RETINT', <DuckyOpcodes.RETINT: 14>), ('CALL', <DuckyOpcodes.CALL: 15>), ('RET', <DuckyOpcodes.RET: 16>), ('CLI', <DuckyOpcodes.CLI: 17>), ('STI', <DuckyOpcodes.STI: 18>), ('RST', <DuckyOpcodes.RST: 19>), ('HLT', <DuckyOpcodes.HLT: 20>), ('IDLE', <DuckyOpcodes.IDLE: 21>), ('LPM', <DuckyOpcodes.LPM: 22>), ('IPI', <DuckyOpcodes.IPI: 23>), ('PUSH', <DuckyOpcodes.PUSH: 24>), ('POP', <DuckyOpcodes.POP: 25>), ('INC', <DuckyOpcodes.INC: 26>), ('DEC', <DuckyOpcodes.DEC: 27>), ('ADD', <DuckyOpcodes.ADD: 28>), ('SUB', <DuckyOpcodes.SUB: 29>), ('MUL', <DuckyOpcodes.MUL: 30>), ('DIV', <DuckyOpcodes.DIV: 31>), ('UDIV', <DuckyOpcodes.UDIV: 32>), ('MOD', <DuckyOpcodes.MOD: 33>), ('AND', <DuckyOpcodes.AND: 34>), ('OR', <DuckyOpcodes.OR: 35>), ('XOR', <DuckyOpcodes.XOR: 36>), ('NOT', <DuckyOpcodes.NOT: 37>), ('SHL', <DuckyOpcodes.SHL: 38>), ('SHR', <DuckyOpcodes.SHR: 39>), ('SHRS', <DuckyOpcodes.SHRS: 40>), ('J', <DuckyOpcodes.J: 46>), ('CMP', <DuckyOpcodes.CMP: 47>), ('CMPU', <DuckyOpcodes.CMPU: 48>), ('SET', <DuckyOpcodes.SET: 49>), ('BRANCH', <DuckyOpcodes.BRANCH: 50>), ('SELECT', <DuckyOpcodes.SELECT: 51>), ('CTR', <DuckyOpcodes.CTR: 60>), ('CTW', <DuckyOpcodes.CTW: 61>), ('FPTC', <DuckyOpcodes.FPTC: 62>), ('SIS', <DuckyOpcodes.SIS: 63>)])
_member_names_ = ['NOP', 'LW', 'LS', 'LB', 'STW', 'STS', 'STB', 'CAS', 'LA', 'LI', 'LIU', 'MOV', 'SWP', 'INT', 'RETINT', 'CALL', 'RET', 'CLI', 'STI', 'RST', 'HLT', 'IDLE', 'LPM', 'IPI', 'PUSH', 'POP', 'INC', 'DEC', 'ADD', 'SUB', 'MUL', 'DIV', 'UDIV', 'MOD', 'AND', 'OR', 'XOR', 'NOT', 'SHL', 'SHR', 'SHRS', 'J', 'CMP', 'CMPU', 'SET', 'BRANCH', 'SELECT', 'CTR', 'CTW', 'FPTC', 'SIS']
_member_type_

alias of int

_value2member_map_ = {0: <DuckyOpcodes.NOP: 0>, 1: <DuckyOpcodes.LW: 1>, 2: <DuckyOpcodes.LS: 2>, 3: <DuckyOpcodes.LB: 3>, 4: <DuckyOpcodes.STW: 4>, 5: <DuckyOpcodes.STS: 5>, 6: <DuckyOpcodes.STB: 6>, 7: <DuckyOpcodes.CAS: 7>, 8: <DuckyOpcodes.LA: 8>, 9: <DuckyOpcodes.LI: 9>, 10: <DuckyOpcodes.LIU: 10>, 11: <DuckyOpcodes.MOV: 11>, 12: <DuckyOpcodes.SWP: 12>, 13: <DuckyOpcodes.INT: 13>, 14: <DuckyOpcodes.RETINT: 14>, 15: <DuckyOpcodes.CALL: 15>, 16: <DuckyOpcodes.RET: 16>, 17: <DuckyOpcodes.CLI: 17>, 18: <DuckyOpcodes.STI: 18>, 19: <DuckyOpcodes.RST: 19>, 20: <DuckyOpcodes.HLT: 20>, 21: <DuckyOpcodes.IDLE: 21>, 22: <DuckyOpcodes.LPM: 22>, 23: <DuckyOpcodes.IPI: 23>, 24: <DuckyOpcodes.PUSH: 24>, 25: <DuckyOpcodes.POP: 25>, 26: <DuckyOpcodes.INC: 26>, 27: <DuckyOpcodes.DEC: 27>, 28: <DuckyOpcodes.ADD: 28>, 29: <DuckyOpcodes.SUB: 29>, 30: <DuckyOpcodes.MUL: 30>, 31: <DuckyOpcodes.DIV: 31>, 32: <DuckyOpcodes.UDIV: 32>, 33: <DuckyOpcodes.MOD: 33>, 34: <DuckyOpcodes.AND: 34>, 35: <DuckyOpcodes.OR: 35>, 36: <DuckyOpcodes.XOR: 36>, 37: <DuckyOpcodes.NOT: 37>, 38: <DuckyOpcodes.SHL: 38>, 39: <DuckyOpcodes.SHR: 39>, 40: <DuckyOpcodes.SHRS: 40>, 46: <DuckyOpcodes.J: 46>, 47: <DuckyOpcodes.CMP: 47>, 48: <DuckyOpcodes.CMPU: 48>, 49: <DuckyOpcodes.SET: 49>, 50: <DuckyOpcodes.BRANCH: 50>, 51: <DuckyOpcodes.SELECT: 51>, 60: <DuckyOpcodes.CTR: 60>, 61: <DuckyOpcodes.CTW: 61>, 62: <DuckyOpcodes.FPTC: 62>, 63: <DuckyOpcodes.SIS: 63>}
class ducky.cpu.instructions.Encoding[source]

Bases: _ctypes.Structure

static repr(inst, fields)[source]
static sign_extend_immediate(logger, inst, sign_mask, ext_mask)[source]
class ducky.cpu.instructions.EncodingA[source]

Bases: _ctypes.Structure

_fields_ = [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('reg3', <class 'ctypes.c_uint'>, 5)]
_pack_ = 0
opcode

Structure/Union member

reg1

Structure/Union member

reg2

Structure/Union member

reg3

Structure/Union member

class ducky.cpu.instructions.EncodingC[source]

Bases: _ctypes.Structure

_fields_ = [('opcode', <class 'ctypes.c_uint'>, 6), ('reg', <class 'ctypes.c_uint'>, 5), ('flag', <class 'ctypes.c_uint'>, 3), ('value', <class 'ctypes.c_uint'>, 1), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 16)]
_pack_ = 0
static fill_reloc_slot(inst, slot)[source]
flag

Structure/Union member

immediate

Structure/Union member

immediate_flag

Structure/Union member

opcode

Structure/Union member

reg

Structure/Union member

static sign_extend_immediate(logger, inst)[source]
value

Structure/Union member

class ducky.cpu.instructions.EncodingContext(logger)[source]

Bases: ducky.util.LoggingCapable, object

_u32_to_encoding_pypy(u, encoding)[source]
_u32_to_encoding_python(u, encoding)[source]
decode(instr_set, inst, core=None)[source]
encode(inst, field, size, value, raise_on_large_value=False)[source]
class ducky.cpu.instructions.EncodingI[source]

Bases: _ctypes.Structure

_fields_ = [('opcode', <class 'ctypes.c_uint'>, 6), ('reg', <class 'ctypes.c_uint'>, 5), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 20)]
_pack_ = 0
static fill_reloc_slot(inst, slot)[source]
immediate

Structure/Union member

immediate_flag

Structure/Union member

opcode

Structure/Union member

reg

Structure/Union member

static sign_extend_immediate(logger, inst)[source]
class ducky.cpu.instructions.EncodingR[source]

Bases: _ctypes.Structure

_fields_ = [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 15)]
_pack_ = 0
static fill_reloc_slot(inst, slot)[source]
immediate

Structure/Union member

immediate_flag

Structure/Union member

opcode

Structure/Union member

reg1

Structure/Union member

reg2

Structure/Union member

static sign_extend_immediate(logger, inst)[source]
class ducky.cpu.instructions.EncodingS[source]

Bases: _ctypes.Structure

_fields_ = [('opcode', <class 'ctypes.c_uint'>, 6), ('reg1', <class 'ctypes.c_uint'>, 5), ('reg2', <class 'ctypes.c_uint'>, 5), ('flag', <class 'ctypes.c_uint'>, 3), ('value', <class 'ctypes.c_uint'>, 1), ('immediate_flag', <class 'ctypes.c_uint'>, 1), ('immediate', <class 'ctypes.c_uint'>, 11)]
_pack_ = 0
static fill_reloc_slot(inst, slot)[source]
flag

Structure/Union member

immediate

Structure/Union member

immediate_flag

Structure/Union member

opcode

Structure/Union member

reg1

Structure/Union member

reg2

Structure/Union member

static sign_extend_immediate(logger, inst)[source]
value

Structure/Union member

class ducky.cpu.instructions.FPTC(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'fptc'
opcode = 62
operands = []
class ducky.cpu.instructions.HLT(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_RI

static execute(core, inst)[source]
mnemonic = 'hlt'
opcode = 20
operands = ['ri']
class ducky.cpu.instructions.IDLE(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
mnemonic = 'idle'
opcode = 21
operands = []
ducky.cpu.instructions.IE_FLAG(n)[source]
ducky.cpu.instructions.IE_IMM(n, l)[source]
ducky.cpu.instructions.IE_OPCODE()[source]
ducky.cpu.instructions.IE_REG(n)[source]
class ducky.cpu.instructions.INC(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'inc'
opcode = 26
operands = ['r']
class ducky.cpu.instructions.INT(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_RI

static execute(core, inst)[source]
mnemonic = 'int'
opcode = 13
operands = ['ri']
class ducky.cpu.instructions.IPI(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_RI

static execute(core, inst)[source]
mnemonic = 'ipi'
opcode = 23
operands = ['r', 'ri']
class ducky.cpu.instructions.InstructionSet[source]

Bases: object

classmethod disassemble_instruction(logger, inst)[source]
classmethod init()[source]
instruction_set_id = None
instructions = []
opcodes = None
class ducky.cpu.instructions.InstructionSetMetaclass(name, bases, dict)[source]

Bases: type

class ducky.cpu.instructions.J(instruction_set)[source]

Bases: ducky.cpu.instructions._JUMP

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'j'
opcode = 46
operands = ['ri']
ducky.cpu.instructions.JUMP(core, inst, reg)[source]
class ducky.cpu.instructions.LA(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD_IMM

static jit(core, inst)[source]
classmethod load(core, inst)[source]
mnemonic = 'la'
opcode = 8
operands = ['r', 'i']
relative_address = True
class ducky.cpu.instructions.LB(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD

mnemonic = 'lb'
opcode = 3
operands = ['r', 'a']
class ducky.cpu.instructions.LI(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD_IMM

static jit(core, inst)[source]
classmethod load(core, inst)[source]
mnemonic = 'li'
opcode = 9
operands = ['r', 'i']
class ducky.cpu.instructions.LIU(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD_IMM

static jit(core, inst)[source]
classmethod load(core, inst)[source]
mnemonic = 'liu'
opcode = 10
operands = ['r', 'i']
class ducky.cpu.instructions.LPM(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
mnemonic = 'lpm'
opcode = 22
operands = []
class ducky.cpu.instructions.LS(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD

mnemonic = 'ls'
opcode = 2
operands = ['r', 'a']
class ducky.cpu.instructions.LW(instruction_set)[source]

Bases: ducky.cpu.instructions._LOAD

mnemonic = 'lw'
opcode = 1
operands = ['r', 'a']
class ducky.cpu.instructions.MOD(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'mod'
opcode = 33
operands = ['r', 'ri']
class ducky.cpu.instructions.MOV(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_R

encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'mov'
opcode = 11
operands = ['r', 'r']
class ducky.cpu.instructions.MUL(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'mul'
opcode = 30
operands = ['r', 'ri']
class ducky.cpu.instructions.NOP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
mnemonic = 'nop'
opcode = 0
operands = []
class ducky.cpu.instructions.NOT(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R

encoding

alias of EncodingR

static execute(core, inst)[source]
mnemonic = 'not'
opcode = 37
operands = ['r']
class ducky.cpu.instructions.OR(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'or'
opcode = 35
operands = ['r', 'ri']
class ducky.cpu.instructions.POP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'pop'
opcode = 25
operands = ['r']
class ducky.cpu.instructions.PUSH(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_RI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'push'
opcode = 24
operands = ['ri']
class ducky.cpu.instructions.RET(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'ret'
opcode = 16
operands = []
class ducky.cpu.instructions.RETINT(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'retint'
opcode = 14
operands = []
ducky.cpu.instructions.RI_ADDR(core, inst, reg)[source]
ducky.cpu.instructions.RI_VAL(core, inst, reg, sign_extend=True)[source]
class ducky.cpu.instructions.RST(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
mnemonic = 'rst'
opcode = 19
operands = []
class ducky.cpu.instructions.SELE(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'sele'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELG(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selg'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELGE(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selge'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELL(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'sell'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELLE(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selle'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELNE(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selne'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELNO(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selno'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELNS(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selns'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELNZ(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selnz'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELO(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selo'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELS(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'sels'
operands = ['r', 'ri']
class ducky.cpu.instructions.SELZ(instruction_set)[source]

Bases: ducky.cpu.instructions._SELECT

mnemonic = 'selz'
operands = ['r', 'ri']
class ducky.cpu.instructions.SETE(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'sete'
operands = ['r']
class ducky.cpu.instructions.SETG(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setg'
operands = ['r']
class ducky.cpu.instructions.SETGE(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setge'
operands = ['r']
class ducky.cpu.instructions.SETL(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setl'
operands = ['r']
class ducky.cpu.instructions.SETLE(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setle'
operands = ['r']
class ducky.cpu.instructions.SETNE(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setne'
operands = ['r']
class ducky.cpu.instructions.SETNO(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setno'
operands = ['r']
class ducky.cpu.instructions.SETNS(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setns'
operands = ['r']
class ducky.cpu.instructions.SETNZ(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setnz'
operands = ['r']
class ducky.cpu.instructions.SETO(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'seto'
operands = ['r']
class ducky.cpu.instructions.SETS(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'sets'
operands = ['r']
class ducky.cpu.instructions.SETZ(instruction_set)[source]

Bases: ducky.cpu.instructions._SET

mnemonic = 'setz'
operands = ['r']
class ducky.cpu.instructions.SHL(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'shiftl'
opcode = 38
operands = ['r', 'ri']
class ducky.cpu.instructions.SHR(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'shiftr'
opcode = 39
operands = ['r', 'ri']
class ducky.cpu.instructions.SHRS(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'shiftrs'
opcode = 40
operands = ['r', 'ri']
class ducky.cpu.instructions.SIS(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_RI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'sis'
opcode = 63
operands = ['ri']
class ducky.cpu.instructions.STB(instruction_set)[source]

Bases: ducky.cpu.instructions._STORE

mnemonic = 'stb'
opcode = 6
operands = ['a', 'r']
class ducky.cpu.instructions.STI(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

encoding

alias of EncodingI

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'sti'
opcode = 18
operands = []
class ducky.cpu.instructions.STS(instruction_set)[source]

Bases: ducky.cpu.instructions._STORE

mnemonic = 'sts'
opcode = 5
operands = ['a', 'r']
class ducky.cpu.instructions.STW(instruction_set)[source]

Bases: ducky.cpu.instructions._STORE

mnemonic = 'stw'
opcode = 4
operands = ['a', 'r']
class ducky.cpu.instructions.SUB(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'sub'
opcode = 29
operands = ['r', 'ri']
class ducky.cpu.instructions.SWP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_R

encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
mnemonic = 'swp'
opcode = 12
operands = ['r', 'r']
class ducky.cpu.instructions.UDIV(instruction_set)[source]

Bases: ducky.cpu.instructions._BINOP

static jit(core, inst)[source]
mnemonic = 'udiv'
opcode = 32
operands = ['r', 'ri']
ducky.cpu.instructions.UINT20_FMT(i)[source]
class ducky.cpu.instructions.XOR(instruction_set)[source]

Bases: ducky.cpu.instructions._BITOP

static jit(core, inst)[source]
mnemonic = 'xor'
opcode = 36
operands = ['r', 'ri']
class ducky.cpu.instructions._BINOP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_RI

encoding

alias of EncodingR

static execute(core, inst)[source]
class ducky.cpu.instructions._BITOP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_RI

encoding

alias of EncodingR

static execute(core, inst)[source]
class ducky.cpu.instructions._BRANCH(instruction_set)[source]

Bases: ducky.cpu.instructions._COND

classmethod assemble_operands(ctx, inst, operands)[source]
static disassemble_mnemonic(inst)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingC

static execute(core, inst)[source]
static fill_reloc_slot(inst, slot)[source]
inst_aligned = True
static jit(core, inst)[source]
opcode = 50
operands = 'ri'
relative_address = True
class ducky.cpu.instructions._CMP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_RI

encoding

alias of EncodingR

static evaluate(core, x, y, signed=True)[source]

Compare two numbers, and update relevant flags. Signed comparison is used unless signed is False. All arithmetic flags are set to zero before the relevant ones are set.

O flag is reset like the others, therefore caller has to take care of it’s setting if it’s required to set it.

Parameters:
  • x (u32) – left hand number
  • y (u32) – right hand number
  • signed (bool) – use signed, defaults to True
class ducky.cpu.instructions._COND(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

FLAGS = ['arith_equal', 'arith_zero', 'arith_overflow', 'arith_sign', 'l', 'g']
GFLAGS = [0, 1, 2, 3]
MNEMONICS = ['e', 'z', 'o', 's', 'g', 'l']
static evaluate(core, inst)[source]
static set_condition(ctx, inst, flag, value)[source]
class ducky.cpu.instructions._JUMP(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingI

inst_aligned = True
operands = 'ri'
relative_address = True
class ducky.cpu.instructions._LOAD(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
operands = 'r,a'
class ducky.cpu.instructions._LOAD_IMM(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor_R_I

classmethod execute(core, inst)[source]
classmethod load(core, inst)[source]
class ducky.cpu.instructions._SELECT(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

classmethod assemble_operands(ctx, inst, operands)[source]
static disassemble_mnemonic(inst)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingS

static execute(core, inst)[source]
static jit(core, inst)[source]
opcode = 51
operands = 'r,ri'
class ducky.cpu.instructions._SET(instruction_set)[source]

Bases: ducky.cpu.instructions._COND

classmethod assemble_operands(ctx, inst, operands)[source]
static disassemble_mnemonic(inst)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingS

static execute(core, inst)[source]
opcode = 49
operands = 'r'
class ducky.cpu.instructions._STORE(instruction_set)[source]

Bases: ducky.cpu.instructions.Descriptor

static assemble_operands(ctx, inst, operands)[source]
static disassemble_operands(logger, inst)[source]
encoding

alias of EncodingR

static execute(core, inst)[source]
static jit(core, inst)[source]
operands = 'a,r'
ducky.cpu.instructions.encoding_to_u32(inst)[source]
ducky.cpu.instructions.get_instruction_set(i, exc=None)[source]
ducky.cpu.instructions.update_arith_flags(core, reg)[source]

Set relevant arithmetic flags according to content of registers. Flags are set to zero at the beginning, then content of each register is examined, and S and Z flags are set.

E flag is not touched, O flag is set to zero.

Parameters:reg (u32_t) – register