| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- \subsection{Processor instruction set tables}\label{subsec:instruction_sets}
- \arrayrulecolor{black}
- \begin{longtable}[h!]{| l | p{.70\textwidth} | c |}
- \caption{Instruction set for RISC processor. * Required immediate size in bytes}
- \label{table:risc_instructions}\\
- \hline
- \rowcolor[rgb]{0.82,0.82,0.82}
- Instr. & Description & I-size *\\\hline
- \endhead
- \arrayrulecolor{black}\hline
- \endfoot
- \multicolumn{3}{|c|}{
- \cellcolor[rgb]{0.7,0.7,1}\textit{2 register instructions}} \\\hline
- \arrayrulecolor[rgb]{0.82,0.82,0.82}
- MOVE & Copy value from one register to other & 0 \\\hline
- ADD & Arithmetical addition & 0 \\
- SUB & Arithmetical subtraction & 0 \\
- AND & Logical AND & 0 \\
- OR & Logical OR & 0 \\
- XOR & Logical XOR & 0 \\
- MUL & Arithmetical multiplication & 0 \\
- DIV & Arithmetical division (inc. modulus) & 0 \\
- \arrayrulecolor{black}\hline
- \multicolumn{3}{|c|}{
- \cellcolor[rgb]{0.7,0.7,1}\textit{1 register instructions}} \\
- \hline\arrayrulecolor[rgb]{0.82,0.82,0.82}
- COPY0 & Copy intimidate to a register 0 & 1 \\
- COPY1 & Copy intimidate to a register 1 & 1 \\
- COPY2 & Copy intimidate to a register 2 & 1 \\
- COPY3 & Copy intimidate to a register 3 & 1 \\\hline
- ADDC & Arithmetical addition with carry bit& 0 \\
- ADDI & Arithmetical addition with immediate & 1 \\
- SUBC & Arithmetical subtraction with carry bit & 0 \\
- SUBI & Arithmetical subtraction with immediate & 1 \\\hline
- ANDI & Logical AND with immediate & 1 \\
- ORI & Logical OR with immediate & 1 \\
- XORI & Logical XOR with immediate & 1 \\\hline
- CI0 & Replace intimidate value byte 0 for next instruction & 1 \\
- CI1 & Replace intimidate value byte 1 for next instruction & 1 \\
- CI2 & Replace intimidate value byte 2 for next instruction & 1 \\\hline
- SLL & Shift left logical & 1 \\
- SRL & Shift right logical & 1 \\
- SRA & Shift right arithmetical & 1 \\\hline
- LWHI & Load word (high byte) & 3 \\
- SWHI & Store word (high byte, reg. only) & 0 \\
- LWLO & Load word (low byte) & 3 \\
- SWLO & Store word (low byte, stores high byte reg.) & 3 \\\hline
- INC & Increase by 1 & 0 \\
- DEC & Decrease by 1 & 0 \\
- GETAH& Get ALU high byte reg. (only for MUL \& DIV \& ROL \& ROR) & 0 \\
- GETIF& Get interrupt flags & 0 \\\hline
- PUSH & Push to stack & 0 \\
- POP & Pop from stack & 0 \\
- COM & Send/Receive to/from com. block & 1 \\\hline
- BEQ & Branch on equal & 3 \\
- BGT & Branch on greater than & 3 \\
- BGE & Branch on greater equal than & 3 \\
- BZ & Branch on zero & 2 \\
- \arrayrulecolor{black}\hline
- \multicolumn{3}{|c|}{
- \cellcolor[rgb]{0.7,0.7,1}\textit{0 register instructions}
- } \\
- \hline\arrayrulecolor[rgb]{0.82,0.82,0.82}
- CALL & Call function, put return to stack & 2 \\
- RET & Return from function & 0 \\
- JUMP & Jump to address & 2 \\
- RETI & Return from interrupt & 0 \\
- INTRE& Set interrupt entry pointer & 2 \\\hline
- \end{longtable}
- \arrayrulecolor{black}
- \begin{longtable}[h!]{| l | p{0.8\textwidth} |}
- \caption{Instructions for OISC processor.}
- \label{tab:oisc_instructions}\\
-
- \hline
- \rowcolor[rgb]{0.82,0.82,0.82}
- Name & Description \\\hline
- \endhead
-
- \arrayrulecolor{black}\hline
- \endfoot
-
- \multicolumn{2}{|c|}{
- \cellcolor[rgb]{0.7,0.7,1}\textit{Destination Addresses}} \\\hline
- \arrayrulecolor[rgb]{0.82,0.82,0.82}
-
- ACC0 & Set ALU source A accumulator \\
- ACC1 & Set ALU source B accumulator \\\hline
- BR0 & Set Branch pointer register (low byte) \\
- BR1 & Set Branch pointer register (high byte) \\
- BRZ & If source value is 0, set program counter to branch pointer \\\hline
- STACK& Push value to stack \\
- MEM0 & Set Memory pointer register (low byte) \\
- MEM1 & Set Memory pointer register (middle byte) \\
- MEM2 & Set Memory pointer register (high byte) \\
- MEMHI& Save high byte to memory at memory pointer \\
- MEMLO& Save low byte to memory at memory pointer \\\hline
- COMA & Set communication block address register \\
- COMD & Send value to communication block \\\hline
- REG0 & Set general purpose register 0 \\
- REG1 & set general purpose register 1 \\
-
- \arrayrulecolor{black}\hline
- \multicolumn{2}{|c|}{
- \cellcolor[rgb]{0.7,0.7,1}\textit{Source Addresses}} \\\hline
- \arrayrulecolor[rgb]{0.82,0.82,0.82}
-
- NULL & Get constant 0 \\
- ALU0 & Get value at ALU source A accumulator \\
- ALU1 & Get value at ALU source B accumulator \\\hline
-
- ADD & Get Arithmetical addition of ALU sources \\
- ADDC & Get Arithmetical addition carry \\
- ADC & Get Arithmetical addition of ALU sources and carry \\\hline
-
- SUB & Get Arithmetical subtraction of ALU sources \\
- SUBC & Get Arithmetical subtraction carry \\
- SBC & Get Arithmetical subtraction of ALU sources and carry \\\hline
-
- AND & Get Logical AND of ALU sources \\
- OR & Get Logical OR of ALU sources \\
- XOR & Get Logical XOR of ALU sources \\\hline
-
- SLL & Get ALU source A shifted left by source B \\
- SRL & Get ALU source A shifted right by source B \\
- ROL & Get rolled off value from previous SLL instance \\
- ROR & Get rolled off value from previous SRL instance \\\hline
-
- MULLO& Get Arithmetical multiplication of ALU sources (low byte) \\
- MULHI& Get Arithmetical multiplication of ALU sources (high byte) \\
- DIV & Get Arithmetical division of ALU sources \\
- MOD & Get Arithmetical modulus of ALU sources \\\hline
-
- EQ & Check if ALU source A is equal to source B \\
- GT & Check if ALU source A is greater than source B \\
- GE & Check if ALU source A is greater or equal to source B \\
- NE & Check if ALU source A is not equal to source B \\
- LT & Check if ALU source A is less than source B \\
- LE & Check if ALU source A is less or equal to to source B \\\hline
-
- BR0 & Get Branch pointer register value (low byte) \\
- BR1 & Get Branch pointer register value (high byte) \\
- PC0 & Get Program counter value (low byte) \\
- PC1 & Get Program counter value (high byte) \\\hline
-
- MEM0 & Get Memory pointer register value (low byte) \\
- MEM1 & Get Memory pointer register value (middle byte) \\
- MEM2 & Get Memory pointer register value (high byte) \\
- MEMHI& Load high byte from memory at memory pointer \\
- MEMLO& Load low byte from memory at memory pointer \\\hline
-
- STACK& Pop value from stack \\
- ST0 & Get stack address value (low byte) \\
- ST1 & Get stack address value (high byte) \\
-
- COMA & Get communication block address register value \\
- COMD & Read value from communication block \\\hline
-
- REG0 & Get value from general purpose register 0 \\
- REG1 & Get value from general purpose register 1 \\
-
- \end{longtable}
|