ducky.cpu.instructions module¶
-
class
ducky.cpu.instructions.
ADD
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'add'¶
-
opcode
= <DuckyOpcodes.ADD: 28>¶
-
-
class
ducky.cpu.instructions.
AND
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'and'¶
-
opcode
= <DuckyOpcodes.AND: 34>¶
-
-
class
ducky.cpu.instructions.
BE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'be'¶
-
-
class
ducky.cpu.instructions.
BG
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bg'¶
-
-
class
ducky.cpu.instructions.
BGE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bge'¶
-
-
class
ducky.cpu.instructions.
BL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bl'¶
-
-
class
ducky.cpu.instructions.
BLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'ble'¶
-
-
class
ducky.cpu.instructions.
BNE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bne'¶
-
-
class
ducky.cpu.instructions.
BNO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bno'¶
-
-
class
ducky.cpu.instructions.
BNS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bns'¶
-
-
class
ducky.cpu.instructions.
BNZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bnz'¶
-
-
class
ducky.cpu.instructions.
BO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bo'¶
-
-
class
ducky.cpu.instructions.
BS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bs'¶
-
-
class
ducky.cpu.instructions.
BZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BRANCH
-
mnemonic
= 'bz'¶
-
-
class
ducky.cpu.instructions.
CALL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._JUMP
-
mnemonic
= 'call'¶
-
opcode
= <DuckyOpcodes.CALL: 15>¶
-
-
class
ducky.cpu.instructions.
CAS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'cas'¶
-
opcode
= <DuckyOpcodes.CAS: 7>¶
-
operands
= 'r,r,r'¶
-
-
class
ducky.cpu.instructions.
CLI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'cli'¶
-
opcode
= <DuckyOpcodes.CLI: 17>¶
-
-
class
ducky.cpu.instructions.
CMP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._CMP
-
mnemonic
= 'cmp'¶
-
opcode
= <DuckyOpcodes.CMP: 47>¶
-
-
class
ducky.cpu.instructions.
CMPU
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._CMP
-
mnemonic
= 'cmpu'¶
-
opcode
= <DuckyOpcodes.CMPU: 48>¶
-
-
class
ducky.cpu.instructions.
CTR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'ctr'¶
-
opcode
= <DuckyOpcodes.CTR: 60>¶
-
-
class
ducky.cpu.instructions.
CTW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'ctw'¶
-
opcode
= <DuckyOpcodes.CTW: 61>¶
-
-
class
ducky.cpu.instructions.
DEC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'dec'¶
-
opcode
= <DuckyOpcodes.DEC: 27>¶
-
-
class
ducky.cpu.instructions.
DIV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'div'¶
-
opcode
= <DuckyOpcodes.DIV: 31>¶
-
-
class
ducky.cpu.instructions.
Descriptor
(instruction_set)[source]¶ Bases:
object
-
inst_aligned
= False¶
-
mnemonic
= None¶
-
opcode
= None¶
-
operands
= None¶
-
pattern
= None¶
-
relative_address
= False¶
-
-
class
ducky.cpu.instructions.
Descriptor_I
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'i'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r'¶
-
-
class
ducky.cpu.instructions.
Descriptor_RI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'ri'¶
-
-
class
ducky.cpu.instructions.
Descriptor_RI_R
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'ri,r'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_I
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,i'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_R
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,r'¶
-
-
class
ducky.cpu.instructions.
Descriptor_R_RI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
operands
= 'r,ri'¶
-
-
class
ducky.cpu.instructions.
DuckyInstructionSet
[source]¶ Bases:
ducky.cpu.instructions.InstructionSet
-
instruction_set_id
= 0¶
-
instructions
= [<ducky.cpu.instructions.NOP object at 0x7f16cbe01e50>, <ducky.cpu.instructions.INT object at 0x7f16cbe01f50>, <ducky.cpu.instructions.IPI object at 0x7f16cbe01f90>, <ducky.cpu.instructions.RETINT object at 0x7f16cbe01fd0>, <ducky.cpu.instructions.CALL object at 0x7f16cbd95090>, <ducky.cpu.instructions.RET object at 0x7f16cbd950d0>, <ducky.cpu.instructions.CLI object at 0x7f16cbd95150>, <ducky.cpu.instructions.STI object at 0x7f16cbd951d0>, <ducky.cpu.instructions.HLT object at 0x7f16cbd95250>, <ducky.cpu.instructions.RST object at 0x7f16cbd95290>, <ducky.cpu.instructions.IDLE object at 0x7f16cbd95310>, <ducky.cpu.instructions.PUSH object at 0x7f16cbd95390>, <ducky.cpu.instructions.POP object at 0x7f16cbd953d0>, <ducky.cpu.instructions.INC object at 0x7f16cbd95410>, <ducky.cpu.instructions.DEC object at 0x7f16cbd95450>, <ducky.cpu.instructions.ADD object at 0x7f16cbd95490>, <ducky.cpu.instructions.SUB object at 0x7f16cbd954d0>, <ducky.cpu.instructions.CMP object at 0x7f16cbd95510>, <ducky.cpu.instructions.J object at 0x7f16cbd95550>, <ducky.cpu.instructions.INW object at 0x7f16cbd95590>, <ducky.cpu.instructions.INB object at 0x7f16cbd955d0>, <ducky.cpu.instructions.INS object at 0x7f16cbd95610>, <ducky.cpu.instructions.OUTS object at 0x7f16cbd95650>, <ducky.cpu.instructions.OUTW object at 0x7f16cbd95690>, <ducky.cpu.instructions.OUTB object at 0x7f16cbd956d0>, <ducky.cpu.instructions.AND object at 0x7f16cbd95710>, <ducky.cpu.instructions.OR object at 0x7f16cbd95750>, <ducky.cpu.instructions.XOR object at 0x7f16cbd95790>, <ducky.cpu.instructions.NOT object at 0x7f16cbd957d0>, <ducky.cpu.instructions.SHIFTL object at 0x7f16cbd95810>, <ducky.cpu.instructions.SHIFTR object at 0x7f16cbd95850>, <ducky.cpu.instructions.LW object at 0x7f16cbd95890>, <ducky.cpu.instructions.LS object at 0x7f16cbd958d0>, <ducky.cpu.instructions.LB object at 0x7f16cbd95910>, <ducky.cpu.instructions.LI object at 0x7f16cbd95950>, <ducky.cpu.instructions.LIU object at 0x7f16cbd95990>, <ducky.cpu.instructions.LA object at 0x7f16cbd959d0>, <ducky.cpu.instructions.STW object at 0x7f16cbd95a10>, <ducky.cpu.instructions.STS object at 0x7f16cbd95a50>, <ducky.cpu.instructions.STB object at 0x7f16cbd95a90>, <ducky.cpu.instructions.MOV object at 0x7f16cbd95ad0>, <ducky.cpu.instructions.SWP object at 0x7f16cbd95b10>, <ducky.cpu.instructions.MUL object at 0x7f16cbd95b50>, <ducky.cpu.instructions.DIV object at 0x7f16cbd95b90>, <ducky.cpu.instructions.UDIV object at 0x7f16cbd95bd0>, <ducky.cpu.instructions.MOD object at 0x7f16cbd95c10>, <ducky.cpu.instructions.CMPU object at 0x7f16cbd95c50>, <ducky.cpu.instructions.CAS object at 0x7f16cbd95c90>, <ducky.cpu.instructions.SIS object at 0x7f16cbd95cd0>, <ducky.cpu.instructions.BE object at 0x7f16cbd95d10>, <ducky.cpu.instructions.BNE object at 0x7f16cbd95d50>, <ducky.cpu.instructions.BZ object at 0x7f16cbd95d90>, <ducky.cpu.instructions.BNZ object at 0x7f16cbd95dd0>, <ducky.cpu.instructions.BO object at 0x7f16cbd95e10>, <ducky.cpu.instructions.BNO object at 0x7f16cbd95e50>, <ducky.cpu.instructions.BS object at 0x7f16cbd95e90>, <ducky.cpu.instructions.BNS object at 0x7f16cbd95ed0>, <ducky.cpu.instructions.BG object at 0x7f16cbd95f10>, <ducky.cpu.instructions.BGE object at 0x7f16cbd95f50>, <ducky.cpu.instructions.BL object at 0x7f16cbd95f90>, <ducky.cpu.instructions.BLE object at 0x7f16cbd95fd0>, <ducky.cpu.instructions.SETE object at 0x7f16cbda7050>, <ducky.cpu.instructions.SETNE object at 0x7f16cbda7090>, <ducky.cpu.instructions.SETZ object at 0x7f16cbda70d0>, <ducky.cpu.instructions.SETNZ object at 0x7f16cbda7110>, <ducky.cpu.instructions.SETO object at 0x7f16cbda7150>, <ducky.cpu.instructions.SETNO object at 0x7f16cbda7190>, <ducky.cpu.instructions.SETS object at 0x7f16cbda71d0>, <ducky.cpu.instructions.SETNS object at 0x7f16cbda7210>, <ducky.cpu.instructions.SETG object at 0x7f16cbda7250>, <ducky.cpu.instructions.SETGE object at 0x7f16cbda7290>, <ducky.cpu.instructions.SETL object at 0x7f16cbda72d0>, <ducky.cpu.instructions.SETLE object at 0x7f16cbda7310>, <ducky.cpu.instructions.LPM object at 0x7f16cbda7350>, <ducky.cpu.instructions.CTR object at 0x7f16cbda73d0>, <ducky.cpu.instructions.CTW object at 0x7f16cbda7410>, <ducky.cpu.instructions.FPTC object at 0x7f16cbda7450>]¶
-
opcode_desc_map
= {<DuckyOpcodes.NOP: 0>: <ducky.cpu.instructions.NOP object at 0x7f16cbe01e50>, <DuckyOpcodes.LW: 1>: <ducky.cpu.instructions.LW object at 0x7f16cbd95890>, <DuckyOpcodes.LS: 2>: <ducky.cpu.instructions.LS object at 0x7f16cbd958d0>, <DuckyOpcodes.LB: 3>: <ducky.cpu.instructions.LB object at 0x7f16cbd95910>, <DuckyOpcodes.STW: 4>: <ducky.cpu.instructions.STW object at 0x7f16cbd95a10>, <DuckyOpcodes.STS: 5>: <ducky.cpu.instructions.STS object at 0x7f16cbd95a50>, <DuckyOpcodes.STB: 6>: <ducky.cpu.instructions.STB object at 0x7f16cbd95a90>, <DuckyOpcodes.CAS: 7>: <ducky.cpu.instructions.CAS object at 0x7f16cbd95c90>, <DuckyOpcodes.LA: 8>: <ducky.cpu.instructions.LA object at 0x7f16cbd959d0>, <DuckyOpcodes.LI: 9>: <ducky.cpu.instructions.LI object at 0x7f16cbd95950>, <DuckyOpcodes.LIU: 10>: <ducky.cpu.instructions.LIU object at 0x7f16cbd95990>, <DuckyOpcodes.MOV: 11>: <ducky.cpu.instructions.MOV object at 0x7f16cbd95ad0>, <DuckyOpcodes.SWP: 12>: <ducky.cpu.instructions.SWP object at 0x7f16cbd95b10>, <DuckyOpcodes.INT: 13>: <ducky.cpu.instructions.INT object at 0x7f16cbe01f50>, <DuckyOpcodes.RETINT: 14>: <ducky.cpu.instructions.RETINT object at 0x7f16cbe01fd0>, <DuckyOpcodes.CALL: 15>: <ducky.cpu.instructions.CALL object at 0x7f16cbd95090>, <DuckyOpcodes.RET: 16>: <ducky.cpu.instructions.RET object at 0x7f16cbd950d0>, <DuckyOpcodes.CLI: 17>: <ducky.cpu.instructions.CLI object at 0x7f16cbd95150>, <DuckyOpcodes.STI: 18>: <ducky.cpu.instructions.STI object at 0x7f16cbd951d0>, <DuckyOpcodes.RST: 19>: <ducky.cpu.instructions.RST object at 0x7f16cbd95290>, <DuckyOpcodes.HLT: 20>: <ducky.cpu.instructions.HLT object at 0x7f16cbd95250>, <DuckyOpcodes.IDLE: 21>: <ducky.cpu.instructions.IDLE object at 0x7f16cbd95310>, <DuckyOpcodes.LPM: 22>: <ducky.cpu.instructions.LPM object at 0x7f16cbda7350>, <DuckyOpcodes.IPI: 23>: <ducky.cpu.instructions.IPI object at 0x7f16cbe01f90>, <DuckyOpcodes.PUSH: 24>: <ducky.cpu.instructions.PUSH object at 0x7f16cbd95390>, <DuckyOpcodes.POP: 25>: <ducky.cpu.instructions.POP object at 0x7f16cbd953d0>, <DuckyOpcodes.INC: 26>: <ducky.cpu.instructions.INC object at 0x7f16cbd95410>, <DuckyOpcodes.DEC: 27>: <ducky.cpu.instructions.DEC object at 0x7f16cbd95450>, <DuckyOpcodes.ADD: 28>: <ducky.cpu.instructions.ADD object at 0x7f16cbd95490>, <DuckyOpcodes.SUB: 29>: <ducky.cpu.instructions.SUB object at 0x7f16cbd954d0>, <DuckyOpcodes.MUL: 30>: <ducky.cpu.instructions.MUL object at 0x7f16cbd95b50>, <DuckyOpcodes.DIV: 31>: <ducky.cpu.instructions.DIV object at 0x7f16cbd95b90>, <DuckyOpcodes.UDIV: 32>: <ducky.cpu.instructions.UDIV object at 0x7f16cbd95bd0>, <DuckyOpcodes.MOD: 33>: <ducky.cpu.instructions.MOD object at 0x7f16cbd95c10>, <DuckyOpcodes.AND: 34>: <ducky.cpu.instructions.AND object at 0x7f16cbd95710>, <DuckyOpcodes.OR: 35>: <ducky.cpu.instructions.OR object at 0x7f16cbd95750>, <DuckyOpcodes.XOR: 36>: <ducky.cpu.instructions.XOR object at 0x7f16cbd95790>, <DuckyOpcodes.NOT: 37>: <ducky.cpu.instructions.NOT object at 0x7f16cbd957d0>, <DuckyOpcodes.SHIFTL: 38>: <ducky.cpu.instructions.SHIFTL object at 0x7f16cbd95810>, <DuckyOpcodes.SHIFTR: 39>: <ducky.cpu.instructions.SHIFTR object at 0x7f16cbd95850>, <DuckyOpcodes.OUTW: 40>: <ducky.cpu.instructions.OUTW object at 0x7f16cbd95690>, <DuckyOpcodes.OUTS: 41>: <ducky.cpu.instructions.OUTS object at 0x7f16cbd95650>, <DuckyOpcodes.OUTB: 42>: <ducky.cpu.instructions.OUTB object at 0x7f16cbd956d0>, <DuckyOpcodes.INW: 43>: <ducky.cpu.instructions.INW object at 0x7f16cbd95590>, <DuckyOpcodes.INS: 44>: <ducky.cpu.instructions.INS object at 0x7f16cbd95610>, <DuckyOpcodes.INB: 45>: <ducky.cpu.instructions.INB object at 0x7f16cbd955d0>, <DuckyOpcodes.J: 46>: <ducky.cpu.instructions.J object at 0x7f16cbd95550>, <DuckyOpcodes.CMP: 47>: <ducky.cpu.instructions.CMP object at 0x7f16cbd95510>, <DuckyOpcodes.CMPU: 48>: <ducky.cpu.instructions.CMPU object at 0x7f16cbd95c50>, <DuckyOpcodes.SET: 49>: <ducky.cpu.instructions.SETLE object at 0x7f16cbda7310>, <DuckyOpcodes.BRANCH: 50>: <ducky.cpu.instructions.BLE object at 0x7f16cbd95fd0>, <DuckyOpcodes.CTR: 60>: <ducky.cpu.instructions.CTR object at 0x7f16cbda73d0>, <DuckyOpcodes.CTW: 61>: <ducky.cpu.instructions.CTW object at 0x7f16cbda7410>, <DuckyOpcodes.FPTC: 62>: <ducky.cpu.instructions.FPTC object at 0x7f16cbda7450>, <DuckyOpcodes.SIS: 63>: <ducky.cpu.instructions.SIS object at 0x7f16cbd95cd0>}¶
-
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.SHIFTL: 38>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.SHIFTR: 39>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.OUTW: 40>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.OUTS: 41>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.OUTB: 42>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INW: 43>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INS: 44>: <class 'ducky.cpu.instructions.EncodingR'>, <DuckyOpcodes.INB: 45>: <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.EncodingC'>, <DuckyOpcodes.BRANCH: 50>: <class 'ducky.cpu.instructions.EncodingC'>, <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
= <DuckyOpcodes.ADD: 28>¶
-
AND
= <DuckyOpcodes.AND: 34>¶
-
BRANCH
= <DuckyOpcodes.BRANCH: 50>¶
-
CALL
= <DuckyOpcodes.CALL: 15>¶
-
CAS
= <DuckyOpcodes.CAS: 7>¶
-
CLI
= <DuckyOpcodes.CLI: 17>¶
-
CMP
= <DuckyOpcodes.CMP: 47>¶
-
CMPU
= <DuckyOpcodes.CMPU: 48>¶
-
CTR
= <DuckyOpcodes.CTR: 60>¶
-
CTW
= <DuckyOpcodes.CTW: 61>¶
-
DEC
= <DuckyOpcodes.DEC: 27>¶
-
DIV
= <DuckyOpcodes.DIV: 31>¶
-
FPTC
= <DuckyOpcodes.FPTC: 62>¶
-
HLT
= <DuckyOpcodes.HLT: 20>¶
-
IDLE
= <DuckyOpcodes.IDLE: 21>¶
-
INB
= <DuckyOpcodes.INB: 45>¶
-
INC
= <DuckyOpcodes.INC: 26>¶
-
INS
= <DuckyOpcodes.INS: 44>¶
-
INT
= <DuckyOpcodes.INT: 13>¶
-
INW
= <DuckyOpcodes.INW: 43>¶
-
IPI
= <DuckyOpcodes.IPI: 23>¶
-
J
= <DuckyOpcodes.J: 46>¶
-
LA
= <DuckyOpcodes.LA: 8>¶
-
LB
= <DuckyOpcodes.LB: 3>¶
-
LI
= <DuckyOpcodes.LI: 9>¶
-
LIU
= <DuckyOpcodes.LIU: 10>¶
-
LPM
= <DuckyOpcodes.LPM: 22>¶
-
LS
= <DuckyOpcodes.LS: 2>¶
-
LW
= <DuckyOpcodes.LW: 1>¶
-
MOD
= <DuckyOpcodes.MOD: 33>¶
-
MOV
= <DuckyOpcodes.MOV: 11>¶
-
MUL
= <DuckyOpcodes.MUL: 30>¶
-
NOP
= <DuckyOpcodes.NOP: 0>¶
-
NOT
= <DuckyOpcodes.NOT: 37>¶
-
OR
= <DuckyOpcodes.OR: 35>¶
-
OUTB
= <DuckyOpcodes.OUTB: 42>¶
-
OUTS
= <DuckyOpcodes.OUTS: 41>¶
-
OUTW
= <DuckyOpcodes.OUTW: 40>¶
-
POP
= <DuckyOpcodes.POP: 25>¶
-
PUSH
= <DuckyOpcodes.PUSH: 24>¶
-
RET
= <DuckyOpcodes.RET: 16>¶
-
RETINT
= <DuckyOpcodes.RETINT: 14>¶
-
RST
= <DuckyOpcodes.RST: 19>¶
-
SET
= <DuckyOpcodes.SET: 49>¶
-
SHIFTL
= <DuckyOpcodes.SHIFTL: 38>¶
-
SHIFTR
= <DuckyOpcodes.SHIFTR: 39>¶
-
SIS
= <DuckyOpcodes.SIS: 63>¶
-
STB
= <DuckyOpcodes.STB: 6>¶
-
STI
= <DuckyOpcodes.STI: 18>¶
-
STS
= <DuckyOpcodes.STS: 5>¶
-
STW
= <DuckyOpcodes.STW: 4>¶
-
SUB
= <DuckyOpcodes.SUB: 29>¶
-
SWP
= <DuckyOpcodes.SWP: 12>¶
-
UDIV
= <DuckyOpcodes.UDIV: 32>¶
-
XOR
= <DuckyOpcodes.XOR: 36>¶
-
-
ducky.cpu.instructions.
ENCODE
(logger, buffer, inst, field, size, value, raise_on_large_value=False)[source]¶
-
class
ducky.cpu.instructions.
EncodingA
[source]¶ Bases:
_ctypes.Structure
-
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
-
flag
¶ Structure/Union member
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg
¶ Structure/Union member
-
value
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingI
[source]¶ Bases:
_ctypes.Structure
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
EncodingR
[source]¶ Bases:
_ctypes.Structure
-
immediate
¶ Structure/Union member
-
immediate_flag
¶ Structure/Union member
-
opcode
¶ Structure/Union member
-
reg1
¶ Structure/Union member
-
reg2
¶ Structure/Union member
-
-
class
ducky.cpu.instructions.
FPTC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'fptc'¶
-
opcode
= <DuckyOpcodes.FPTC: 62>¶
-
-
class
ducky.cpu.instructions.
HLT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'hlt'¶
-
opcode
= <DuckyOpcodes.HLT: 20>¶
-
-
class
ducky.cpu.instructions.
IDLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'idle'¶
-
opcode
= <DuckyOpcodes.IDLE: 21>¶
-
-
class
ducky.cpu.instructions.
INB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._IN
-
mnemonic
= 'inb'¶
-
opcode
= <DuckyOpcodes.INB: 45>¶
-
-
class
ducky.cpu.instructions.
INC
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'inc'¶
-
opcode
= <DuckyOpcodes.INC: 26>¶
-
-
class
ducky.cpu.instructions.
INS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._IN
-
mnemonic
= 'ins'¶
-
opcode
= <DuckyOpcodes.INS: 44>¶
-
-
class
ducky.cpu.instructions.
INT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'int'¶
-
opcode
= <DuckyOpcodes.INT: 13>¶
-
-
class
ducky.cpu.instructions.
INW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._IN
-
mnemonic
= 'inw'¶
-
opcode
= <DuckyOpcodes.INW: 43>¶
-
-
class
ducky.cpu.instructions.
IPI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_RI
-
mnemonic
= 'ipi'¶
-
opcode
= <DuckyOpcodes.IPI: 23>¶
-
-
class
ducky.cpu.instructions.
InstructionSet
[source]¶ Bases:
object
-
instruction_set_id
= None¶
-
instructions
= []¶
-
opcodes
= None¶
-
-
class
ducky.cpu.instructions.
J
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._JUMP
-
mnemonic
= 'j'¶
-
opcode
= <DuckyOpcodes.J: 46>¶
-
-
class
ducky.cpu.instructions.
LA
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'la'¶
-
opcode
= <DuckyOpcodes.LA: 8>¶
-
relative_address
= True¶
-
-
class
ducky.cpu.instructions.
LB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'lb'¶
-
opcode
= <DuckyOpcodes.LB: 3>¶
-
-
class
ducky.cpu.instructions.
LI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'li'¶
-
opcode
= <DuckyOpcodes.LI: 9>¶
-
-
class
ducky.cpu.instructions.
LIU
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD_IMM
-
mnemonic
= 'liu'¶
-
opcode
= <DuckyOpcodes.LIU: 10>¶
-
-
class
ducky.cpu.instructions.
LPM
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'lpm'¶
-
opcode
= <DuckyOpcodes.LPM: 22>¶
-
-
class
ducky.cpu.instructions.
LS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'ls'¶
-
opcode
= <DuckyOpcodes.LS: 2>¶
-
-
class
ducky.cpu.instructions.
LW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._LOAD
-
mnemonic
= 'lw'¶
-
opcode
= <DuckyOpcodes.LW: 1>¶
-
-
class
ducky.cpu.instructions.
MOD
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'mod'¶
-
opcode
= <DuckyOpcodes.MOD: 33>¶
-
-
class
ducky.cpu.instructions.
MOV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'mov'¶
-
opcode
= <DuckyOpcodes.MOV: 11>¶
-
-
class
ducky.cpu.instructions.
MUL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'mul'¶
-
opcode
= <DuckyOpcodes.MUL: 30>¶
-
-
class
ducky.cpu.instructions.
NOP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'nop'¶
-
opcode
= <DuckyOpcodes.NOP: 0>¶
-
-
class
ducky.cpu.instructions.
NOT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'not'¶
-
opcode
= <DuckyOpcodes.NOT: 37>¶
-
-
class
ducky.cpu.instructions.
OR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'or'¶
-
opcode
= <DuckyOpcodes.OR: 35>¶
-
-
class
ducky.cpu.instructions.
OUTB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._OUT
-
mnemonic
= 'outb'¶
-
opcode
= <DuckyOpcodes.OUTB: 42>¶
-
-
class
ducky.cpu.instructions.
OUTS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._OUT
-
mnemonic
= 'outs'¶
-
opcode
= <DuckyOpcodes.OUTS: 41>¶
-
-
class
ducky.cpu.instructions.
OUTW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._OUT
-
mnemonic
= 'outw'¶
-
opcode
= <DuckyOpcodes.OUTW: 40>¶
-
-
class
ducky.cpu.instructions.
POP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R
-
mnemonic
= 'pop'¶
-
opcode
= <DuckyOpcodes.POP: 25>¶
-
-
class
ducky.cpu.instructions.
PUSH
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'push'¶
-
opcode
= <DuckyOpcodes.PUSH: 24>¶
-
-
class
ducky.cpu.instructions.
RET
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'ret'¶
-
opcode
= <DuckyOpcodes.RET: 16>¶
-
-
class
ducky.cpu.instructions.
RETINT
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'retint'¶
-
opcode
= <DuckyOpcodes.RETINT: 14>¶
-
-
class
ducky.cpu.instructions.
RST
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'rst'¶
-
opcode
= <DuckyOpcodes.RST: 19>¶
-
-
class
ducky.cpu.instructions.
SETE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'sete'¶
-
-
class
ducky.cpu.instructions.
SETG
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setg'¶
-
-
class
ducky.cpu.instructions.
SETGE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setge'¶
-
-
class
ducky.cpu.instructions.
SETL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setl'¶
-
-
class
ducky.cpu.instructions.
SETLE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setle'¶
-
-
class
ducky.cpu.instructions.
SETNE
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setne'¶
-
-
class
ducky.cpu.instructions.
SETNO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setno'¶
-
-
class
ducky.cpu.instructions.
SETNS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setns'¶
-
-
class
ducky.cpu.instructions.
SETNZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setnz'¶
-
-
class
ducky.cpu.instructions.
SETO
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'seto'¶
-
-
class
ducky.cpu.instructions.
SETS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'sets'¶
-
-
class
ducky.cpu.instructions.
SETZ
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._SET
-
mnemonic
= 'setz'¶
-
-
class
ducky.cpu.instructions.
SHIFTL
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'shiftl'¶
-
opcode
= <DuckyOpcodes.SHIFTL: 38>¶
-
-
class
ducky.cpu.instructions.
SHIFTR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'shiftr'¶
-
opcode
= <DuckyOpcodes.SHIFTR: 39>¶
-
-
class
ducky.cpu.instructions.
SIS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_RI
-
mnemonic
= 'sis'¶
-
opcode
= <DuckyOpcodes.SIS: 63>¶
-
-
class
ducky.cpu.instructions.
STB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'stb'¶
-
opcode
= <DuckyOpcodes.STB: 6>¶
-
-
class
ducky.cpu.instructions.
STI
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor
-
mnemonic
= 'sti'¶
-
opcode
= <DuckyOpcodes.STI: 18>¶
-
-
class
ducky.cpu.instructions.
STS
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'sts'¶
-
opcode
= <DuckyOpcodes.STS: 5>¶
-
-
class
ducky.cpu.instructions.
STW
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._STORE
-
mnemonic
= 'stw'¶
-
opcode
= <DuckyOpcodes.STW: 4>¶
-
-
class
ducky.cpu.instructions.
SUB
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'sub'¶
-
opcode
= <DuckyOpcodes.SUB: 29>¶
-
-
class
ducky.cpu.instructions.
SWP
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions.Descriptor_R_R
-
mnemonic
= 'swp'¶
-
opcode
= <DuckyOpcodes.SWP: 12>¶
-
-
class
ducky.cpu.instructions.
UDIV
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BINOP
-
mnemonic
= 'udiv'¶
-
opcode
= <DuckyOpcodes.UDIV: 32>¶
-
-
class
ducky.cpu.instructions.
XOR
(instruction_set)[source]¶ Bases:
ducky.cpu.instructions._BITOP
-
mnemonic
= 'xor'¶
-
opcode
= <DuckyOpcodes.XOR: 36>¶
-
-
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
andZ
flags are set.E
flag is not touched,O
flag is set to zero.Parameters: reg (u32_t) – register