ComSquare
Instruction.hpp
Go to the documentation of this file.
1 //
2 // Created by anonymus-raccoon on 3/25/20.
3 //
4 
5 #pragma once
6 
7 #include <string>
8 #include "Models/Ints.hpp"
9 
10 namespace ComSquare::CPU
11 {
12  class CPU;
13 
17 
22 
25 
29 
33 
39 
42 
43 
46 
48  };
49 
51  struct Instruction {
52  int (CPU::*call)(uint24_t valueAddr, AddressingMode mode) = nullptr;
53  int cycleCount = 0;
54  std::string name;
56  int size = 0;
57  };
58 }
Ints.hpp
ComSquare::CPU::Instruction::cycleCount
int cycleCount
Definition: Instruction.hpp:53
ComSquare::CPU::Implied
@ Implied
Definition: Instruction.hpp:16
ComSquare::CPU::CPU
The main CPU.
Definition: CPU.hpp:26
ComSquare::CPU::AbsoluteIndirectIndexedByX
@ AbsoluteIndirectIndexedByX
Definition: Instruction.hpp:45
ComSquare::CPU::DirectPageIndirectIndexedByX
@ DirectPageIndirectIndexedByX
Definition: Instruction.hpp:36
ComSquare::CPU::AbsoluteLong
@ AbsoluteLong
Definition: Instruction.hpp:24
ComSquare::CPU::StackRelativeIndirectIndexedByY
@ StackRelativeIndirectIndexedByY
Definition: Instruction.hpp:41
ComSquare::CPU::DirectPageIndirect
@ DirectPageIndirect
Definition: Instruction.hpp:27
ComSquare::CPU::AbsoluteIndexedByX
@ AbsoluteIndexedByX
Definition: Instruction.hpp:30
ComSquare::CPU
Definition: AddressingModes.cpp:8
ComSquare::CPU::Instruction
Struct containing basic information about instructions.
Definition: Instruction.hpp:51
uint24_t
unsigned uint24_t
Definition: Ints.hpp:10
ComSquare::CPU::AbsoluteIndexedByY
@ AbsoluteIndexedByY
Definition: Instruction.hpp:32
ComSquare::CPU::Instruction::addressingMode
AddressingMode addressingMode
Definition: Instruction.hpp:55
ComSquare::CPU::ImmediateForX
@ ImmediateForX
Definition: Instruction.hpp:21
ComSquare::CPU::ImmediateForA
@ ImmediateForA
Definition: Instruction.hpp:20
ComSquare::CPU::DirectPage
@ DirectPage
Definition: Instruction.hpp:26
ComSquare::CPU::DirectPageIndirectIndexedByYLong
@ DirectPageIndirectIndexedByYLong
Definition: Instruction.hpp:38
ComSquare::CPU::StackRelative
@ StackRelative
Definition: Instruction.hpp:40
ComSquare::CPU::DirectPageIndirectIndexedByY
@ DirectPageIndirectIndexedByY
Definition: Instruction.hpp:37
ComSquare::CPU::Instruction::name
std::string name
Definition: Instruction.hpp:54
ComSquare::CPU::DirectPageIndirectLong
@ DirectPageIndirectLong
Definition: Instruction.hpp:28
ComSquare::CPU::Immediate16bits
@ Immediate16bits
Definition: Instruction.hpp:19
ComSquare::CPU::DirectPageIndexedByX
@ DirectPageIndexedByX
Definition: Instruction.hpp:34
CPU
Label CPU
Definition: form.txt:1
ComSquare::CPU::AbsoluteIndexedByXLong
@ AbsoluteIndexedByXLong
Definition: Instruction.hpp:31
ComSquare::CPU::Instruction::call
int(CPU::* call)(uint24_t valueAddr, AddressingMode mode)
Definition: Instruction.hpp:52
ComSquare::CPU::Absolute
@ Absolute
Definition: Instruction.hpp:23
ComSquare::CPU::Instruction::size
int size
Definition: Instruction.hpp:56
ComSquare::CPU::AbsoluteIndirectLong
@ AbsoluteIndirectLong
Definition: Instruction.hpp:47
ComSquare::CPU::AddressingMode
AddressingMode
Different addressing modes that instructions can use for the main CPU.
Definition: Instruction.hpp:15
ComSquare::CPU::DirectPageIndexedByY
@ DirectPageIndexedByY
Definition: Instruction.hpp:35
ComSquare::CPU::AbsoluteIndirect
@ AbsoluteIndirect
Definition: Instruction.hpp:44
ComSquare::CPU::Immediate8bits
@ Immediate8bits
Definition: Instruction.hpp:18