Updated the docs.

This commit is contained in:
2022-09-21 21:44:38 -05:00
parent f5c82d1c36
commit a82a4c23ad
+50
View File
@@ -9,6 +9,7 @@
\tableofcontents
\chapter{Overview}
\section{Introduction}
This is a very poorly thought out 16-bit machine, but you've got to start somewhere. Currently debating between a CPU status register, 80x86 style, or just placing arithmetic results into a predetermined register.
\section{Registers}
The following are the general purpose registers that can be used.
\begin{itemize}
@@ -36,6 +37,55 @@
\caption{Memory Layout}
\end{figure}
\chapter{ISA}
\section{Instruction Encoding}
Instructions are fixed to one byte in length. For instructions that can take a register as their first or second operand the 3 least significant bits are set
to indicate the register file to use. So an instruction with format XXXX X000 will use Register 1 and so forth all the way to the pattern XXXX X111, which will be Register 8.
In instances where the second operand may be one of three options bits 4 and 5 are set as shown below:\\\\
\begin{tabular}{ c c }
\hline
Bit Pattern & Type \\
\hline
XXX0 0XXX & Register \\
XXX0 1XXX & Constant \\
XXX1 0XXX & Address \\
\hline
\end{tabular}
\section{COPY}
\begin{tabular}{ c c c c }
\hline
Opcode & Mnemonic & Operand 1 & Operand 2 \\
\hline\hline
0x20 & COPY & Register & Immediate 16 / Address, Register \\
0xA0 & COPY & Address & Immediate 16 / Address, Register \\
\hline
\end{tabular}\\[6pt]
Copies 2 bytes of data from either a memory address, a runtime constant or a CPU register into either another CPU register or a memory location.
\section{CMP}
\begin{tabular}{ c c c c }
\hline
Opcode & Mnemonic & Operand 1 & Operand 2 \\
\hline\hline
0x80 & CMP & Register & Register, Immediate 16 / Address \\
\hline
\end{tabular}\\[6pt]
Compares two values and sets a CPU status flag (maybe...).
\section{ADD}
\begin{tabular}{ c c c c }
\hline
Opcode & Mnemonic & Operand 1 & Operand 2 \\
\hline\hline
0x40 & ADD & Register & Register, Immediate 16 \\
\hline
\end{tabular}\\[6pt]
Performs addition on a register with a value from another (or the same) register or a runtime constant.
\section{SUB}
\begin{tabular}{ c c c c }
\hline
Opcode & Mnemonic & Operand 1 & Operand 2 \\
\hline\hline
0x60 & SUB & Register & Register, Immediate 16 \\
\hline
\end{tabular}\\[6pt]
Performs subtraction on a register with a value from another (or the same) register or a runtime constant.
\end{document}