mirror of
https://github.com/johnwinans/rvalp.git
synced 2025-09-30 06:30:17 -04:00
CLean up instruction format links from refcard.
This commit is contained in:
parent
902524b244
commit
0f87512cf9
@ -457,10 +457,10 @@
|
|||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% #1 the binary encoding
|
% #1 the binary encoding
|
||||||
\newcommand\DrawInsnTypeRShiftTikz[1]{
|
\newcommand\DrawInsnTypeIShiftTikz[1]{
|
||||||
\BeginTikzPicture
|
\BeginTikzPicture
|
||||||
\StrLen{#1}[\numchars]
|
\StrLen{#1}[\numchars]
|
||||||
\DrawInsnBitstring{\numchars}{#1}{\hyperref[insnformat:rtype]{R-type}}
|
\DrawInsnBitstring{\numchars}{#1}{\hyperref[insnformat:rtype]{I-type}}
|
||||||
\DrawInsnBoxSeg{\numchars}{31}{25}{funct7}
|
\DrawInsnBoxSeg{\numchars}{31}{25}{funct7}
|
||||||
\DrawInsnBoxSeg{\numchars}{24}{20}{shamt}
|
\DrawInsnBoxSeg{\numchars}{24}{20}{shamt}
|
||||||
\DrawInsnBoxSeg{\numchars}{19}{15}{rs1}
|
\DrawInsnBoxSeg{\numchars}{19}{15}{rs1}
|
||||||
@ -474,7 +474,7 @@
|
|||||||
|
|
||||||
\newcommand\DrawInsnTypeRShiftPicture[2]{
|
\newcommand\DrawInsnTypeRShiftPicture[2]{
|
||||||
\InsnStatement{#1}\\
|
\InsnStatement{#1}\\
|
||||||
\DrawInsnTypeRShiftTikz{#2}
|
\DrawInsnTypeIShiftTikz{#2}
|
||||||
}
|
}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -635,7 +635,7 @@
|
|||||||
|
|
||||||
\newcommand\TDrawInsnTypeRShiftPicture[5]{
|
\newcommand\TDrawInsnTypeRShiftPicture[5]{
|
||||||
\TInsnStatement{#1}{#2}{#3}{#4}\\
|
\TInsnStatement{#1}{#2}{#3}{#4}\\
|
||||||
\DrawInsnTypeRShiftTikz{#5}
|
\DrawInsnTypeIShiftTikz{#5}
|
||||||
}
|
}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -783,7 +783,7 @@
|
|||||||
\begin{scope}[shift={(0,-3)}]\DrawInsnBoxLabelsStype\end{scope}
|
\begin{scope}[shift={(0,-3)}]\DrawInsnBoxLabelsStype\end{scope}
|
||||||
\begin{scope}[shift={(0,-4.5)}]\DrawInsnBoxLabelsBtype\end{scope}
|
\begin{scope}[shift={(0,-4.5)}]\DrawInsnBoxLabelsBtype\end{scope}
|
||||||
\begin{scope}[shift={(0,-6)}]\DrawInsnBoxLabelsUtype\end{scope}
|
\begin{scope}[shift={(0,-6)}]\DrawInsnBoxLabelsUtype\end{scope}
|
||||||
\begin{scope}[shift={(0,-7.5)}]\DrawInsnBoxLabelsJtype\end{scope}
|
\begin{scope}[shift={(0,-7.5)}]\DrawInsnBoxLabelsJtype\DrawHexMarkersRel{32}\end{scope}
|
||||||
|
|
||||||
\begin{scope}[shift={(0,1.5)}]
|
\begin{scope}[shift={(0,1.5)}]
|
||||||
\DrawInsnBoxCastleRtype
|
\DrawInsnBoxCastleRtype
|
||||||
@ -803,6 +803,11 @@
|
|||||||
\draw(\x+.25,.5) node[text width = 10, text height = 1]{\substring{#1}{\x}{\x}};
|
\draw(\x+.25,.5) node[text width = 10, text height = 1]{\substring{#1}{\x}{\x}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
\newcommand\InsnBoxTypePosY{33}
|
||||||
|
\newcommand\InsnBoxMneumonicPosY{37}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% #1 opcode
|
% #1 opcode
|
||||||
% #2 func3
|
% #2 func3
|
||||||
@ -814,7 +819,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{imm[4:1\textbar11]}
|
\DrawInsnBoxRel{11}{7}{imm[4:1\textbar11]}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:itype]{B-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -829,7 +835,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:itype]{I-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -846,7 +853,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:itype]{I-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -864,7 +872,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{imm[4:0]}
|
\DrawInsnBoxRel{11}{7}{imm[4:0]}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:stype]{S-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -881,7 +890,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:rtype]{R-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -899,7 +909,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
% \draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:rtype]{R-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
\begin{scope}[shift={(31-14,0)}]\DrawBitstringX{#2}\end{scope}
|
||||||
@ -914,7 +925,8 @@
|
|||||||
\DrawInsnBoxRel{14}{12}{}
|
\DrawInsnBoxRel{14}{12}{}
|
||||||
\DrawInsnBoxRel{11}{7}{}
|
\DrawInsnBoxRel{11}{7}{}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#3};
|
% \draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:rtype]{R-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#3};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
\begin{scope}[shift={(31-11,0)}]\DrawBitstringX{00000}\end{scope}
|
\begin{scope}[shift={(31-11,0)}]\DrawBitstringX{00000}\end{scope}
|
||||||
@ -929,7 +941,8 @@
|
|||||||
\DrawInsnBoxRel{31}{12}{imm[31:12]}
|
\DrawInsnBoxRel{31}{12}{imm[31:12]}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#2};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:utype]{U-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#2};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
}
|
}
|
||||||
@ -940,7 +953,8 @@
|
|||||||
\DrawInsnBoxRel{31}{12}{imm[20\textbar10:1\textbar11\textbar19:12]}
|
\DrawInsnBoxRel{31}{12}{imm[20\textbar10:1\textbar11\textbar19:12]}
|
||||||
\DrawInsnBoxRel{11}{7}{rd}
|
\DrawInsnBoxRel{11}{7}{rd}
|
||||||
\DrawInsnBoxRel{6}{0}{}
|
\DrawInsnBoxRel{6}{0}{}
|
||||||
\draw(33,.75) node[right]{#2};
|
\draw(\InsnBoxTypePosY,.75) node[right]{\hyperref[insnformat:jtype]{J-type}};
|
||||||
|
\draw(\InsnBoxMneumonicPosY,.75) node[right]{#2};
|
||||||
|
|
||||||
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
\begin{scope}[shift={(31-6,0)}]\DrawBitstringX{#1}\end{scope}
|
||||||
|
|
||||||
@ -1134,6 +1148,7 @@
|
|||||||
\DrawInsnBoxCastle{0}{0}
|
\DrawInsnBoxCastle{0}{0}
|
||||||
\end{scope}
|
\end{scope}
|
||||||
\DrawInsnBoxRel{31}{0}{}
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{imm\_j};
|
||||||
|
|
||||||
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaapqrstuvwnbcdefghjkm0}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaapqrstuvwnbcdefghjkm0}\end{scope}
|
||||||
\begin{scope}[shift={(0,0)}]\DrawHexMarkersRel{32}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawHexMarkersRel{32}\end{scope}
|
||||||
@ -1214,6 +1229,7 @@
|
|||||||
\DrawInsnBoxCastle{0}{0}
|
\DrawInsnBoxCastle{0}{0}
|
||||||
\end{scope}
|
\end{scope}
|
||||||
\DrawInsnBoxRel{31}{0}{}
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{imm\_b};
|
||||||
|
|
||||||
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaanbcdefghjkm0}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaanbcdefghjkm0}\end{scope}
|
||||||
|
|
||||||
@ -1286,6 +1302,7 @@
|
|||||||
\DrawInsnBoxCastle{4}{0}
|
\DrawInsnBoxCastle{4}{0}
|
||||||
\end{scope}
|
\end{scope}
|
||||||
\DrawInsnBoxRel{31}{0}{}
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{imm\_s};
|
||||||
|
|
||||||
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaaabcdefghjkmn}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaaabcdefghjkmn}\end{scope}
|
||||||
|
|
||||||
@ -1354,6 +1371,7 @@
|
|||||||
\DrawInsnBoxCastle{4}{0}
|
\DrawInsnBoxCastle{4}{0}
|
||||||
\end{scope}
|
\end{scope}
|
||||||
\DrawInsnBoxRel{31}{0}{}
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{imm\_i};
|
||||||
|
|
||||||
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaaabcdefghjkmn}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{aaaaaaaaaaaaaaaaaaaaabcdefghjkmn}\end{scope}
|
||||||
|
|
||||||
@ -1367,6 +1385,75 @@
|
|||||||
\EndTikzPicture
|
\EndTikzPicture
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\newcommand\DrawInsnOpIShiftTypeDecoding{
|
||||||
|
\BeginTikzPicture
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0,-1.5)}]
|
||||||
|
|
||||||
|
\DrawInsnTypeI{0000010abcde00011000001110000011}
|
||||||
|
|
||||||
|
\pgfmathsetmacro\ArrowNorth{\BitBoxArrowInset}
|
||||||
|
\pgfmathsetmacro\ArrowSouth{-16-\BitBoxArrowInset}
|
||||||
|
\pgfmathsetmacro\ZeroNodeY{\ArrowSouth+2}
|
||||||
|
|
||||||
|
\node at (0,\ZeroNodeY) {0};
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=90](1,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=90](2,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=90](3,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](4,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](5,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](6,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](7,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](8,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](9,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](10,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](11,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](12,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](13,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](14,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](15,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](16,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](17,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](18,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](19,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](20,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](21,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](22,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](23,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](24,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](25,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](26,\ArrowSouth);
|
||||||
|
\draw[red,->](.5,\ZeroNodeY)to[out=0,in=110](27,\ArrowSouth);
|
||||||
|
|
||||||
|
\draw[blue,->](8,\ArrowNorth)to[out=270,in=90](28,\ArrowSouth); % 4
|
||||||
|
\draw[blue,->](9,\ArrowNorth)to[out=270,in=90](29,\ArrowSouth); % 3
|
||||||
|
\draw[blue,->](10,\ArrowNorth)to[out=270,in=90](30,\ArrowSouth); % 2
|
||||||
|
\draw[blue,->](11,\ArrowNorth)to[out=270,in=90](31,\ArrowSouth); % 1
|
||||||
|
\draw[blue,->](12,\ArrowNorth)to[out=270,in=90](32,\ArrowSouth); % 0
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0,0)}]\DrawHexMarkersRel{32}\end{scope}
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0,-19.75)}]
|
||||||
|
\begin{scope}[shift={(0,1.5)}]
|
||||||
|
\DrawInsnBoxCastle{31}{5}
|
||||||
|
\DrawInsnBoxCastle{4}{0}
|
||||||
|
\end{scope}
|
||||||
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{shamt\_i};
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{000000000000000000000000000abcde}\end{scope}
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0,0)}]\DrawHexMarkersRel{32}\end{scope}
|
||||||
|
|
||||||
|
\InsnBoxFieldWidthArrow{31}{5}
|
||||||
|
\InsnBoxFieldWidthArrow{4}{0}
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
\EndTikzPicture
|
||||||
|
}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\newcommand\DrawInsnOpUTypeDecoding{
|
\newcommand\DrawInsnOpUTypeDecoding{
|
||||||
\BeginTikzPicture
|
\BeginTikzPicture
|
||||||
@ -1422,6 +1509,7 @@
|
|||||||
\DrawInsnBoxCastle{11}{0}
|
\DrawInsnBoxCastle{11}{0}
|
||||||
\end{scope}
|
\end{scope}
|
||||||
\DrawInsnBoxRel{31}{0}{}
|
\DrawInsnBoxRel{31}{0}{}
|
||||||
|
\draw(33,.5) node[text width = 10, text height = 1, right]{imm\_u};
|
||||||
|
|
||||||
\begin{scope}[shift={(0,0)}]\DrawBitstringX{abcdefghjkmnpqrstuvw000000000000}\end{scope}
|
\begin{scope}[shift={(0,0)}]\DrawBitstringX{abcdefghjkmnpqrstuvw000000000000}\end{scope}
|
||||||
|
|
||||||
|
@ -10,77 +10,77 @@
|
|||||||
\hline
|
\hline
|
||||||
add & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:add]{Add} & {\tt rd $\leftarrow$ rs1 + rs2, pc $\leftarrow$ pc+4}\\
|
add & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:add]{Add} & {\tt rd $\leftarrow$ rs1 + rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
addi & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:addi]{Add Immediate} & {\tt rd $\leftarrow$ rs1+sx(imm), pc $\leftarrow$ pc+4}\\
|
addi & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:addi]{Add Immediate} & {\tt rd $\leftarrow$ rs1 + \hyperref[imm.i:decode]{imm\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
and & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:and]{And} & {\tt rd $\leftarrow$ rs1 \& rs2, pc $\leftarrow$ pc+4}\\
|
and & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:and]{And} & {\tt rd $\leftarrow$ rs1 \& rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
andi & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:andi]{And Immediate} & {\tt rd $\leftarrow$ rs1 \& sx(imm), pc $\leftarrow$ pc+4}\\
|
andi & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:andi]{And Immediate} & {\tt rd $\leftarrow$ rs1 \& \hyperref[imm.i:decode]{imm\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
auipc & rd, imm & \hyperref[insnformat:utype]{U} & \hyperref[insn:auipc]{Add Upper Immediate to PC} & {\tt rd $\leftarrow$ pc + zr(imm), pc $\leftarrow$ pc+4}\\
|
auipc & rd, imm & \hyperref[insnformat:utype]{U} & \hyperref[insn:auipc]{Add Upper Immediate to PC} & {\tt rd $\leftarrow$ pc + \hyperref[imm.u:decode]{imm\_u}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
beq & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:beq]{Branch Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1==rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
beq & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:beq]{Branch Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1==rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
bge & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bge]{Branch Greater or Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1>=rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
bge & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bge]{Branch Greater or Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1>=rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
bgeu & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bgeu]{Branch Greater or Equal Unsigned} & {\tt pc $\leftarrow$ pc + (\verb@(rs1>=rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
bgeu & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bgeu]{Branch Greater or Equal Unsigned} & {\tt pc $\leftarrow$ pc + (\verb@(rs1>=rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
blt & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:blt]{Branch Less Than} & {\tt pc $\leftarrow$ pc + (\verb@(rs1<rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
blt & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:blt]{Branch Less Than} & {\tt pc $\leftarrow$ pc + (\verb@(rs1<rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
bltu & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bltu]{Branch Less Than Unsigned} & {\tt pc $\leftarrow$ pc + (\verb@(rs1<rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
bltu & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bltu]{Branch Less Than Unsigned} & {\tt pc $\leftarrow$ pc + (\verb@(rs1<rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
bne & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bne]{Branch Not Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1!=rs2) ? sx(imm[12:1]<<1) : 4@)}\\
|
bne & rs1, rs2, imm & \hyperref[insnformat:btype]{B} & \hyperref[insn:bne]{Branch Not Equal} & {\tt pc $\leftarrow$ pc + (\verb@(rs1!=rs2) ? @\hyperref[imm.b:decode]{imm\_b}\verb@ : 4@)}\\
|
||||||
\hline
|
\hline
|
||||||
jal & rd, imm & \hyperref[insnformat:jtype]{J} & \hyperref[insn:jal]{Jump And Link} & {\tt rd $\leftarrow$ pc+4, pc $\leftarrow$ pc+sx(imm<<1)}\\
|
jal & rd, imm & \hyperref[insnformat:jtype]{J} & \hyperref[insn:jal]{Jump And Link} & {\tt rd $\leftarrow$ pc+4, pc $\leftarrow$ pc+\hyperref[imm.j:decode]{imm\_j}}\\
|
||||||
\hline
|
\hline
|
||||||
jalr & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:jalr]{Jump And Link Register} & {\tt rd $\leftarrow$ pc+4, pc $\leftarrow$ (rs1+sx(imm))\&\textasciitilde{}1}\\
|
jalr & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:jalr]{Jump And Link Register} & {\tt rd $\leftarrow$ pc+4, pc $\leftarrow$ (rs1+\hyperref[imm.i:decode]{imm\_i})\&\textasciitilde{}1}\\
|
||||||
\hline
|
\hline
|
||||||
lb & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lb]{Load Byte} & {\tt rd $\leftarrow$ sx(m8(rs1+sx(imm))), pc $\leftarrow$ pc+4}\\
|
lb & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lb]{Load Byte} & {\tt rd $\leftarrow$ sx(m8(rs1+\hyperref[imm.i:decode]{imm\_i})), pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
lbu & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lbu]{Load Byte Unsigned} & {\tt rd $\leftarrow$ zx(m8(rs1+sx(imm))), pc $\leftarrow$ pc+4}\\
|
lbu & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lbu]{Load Byte Unsigned} & {\tt rd $\leftarrow$ zx(m8(rs1+\hyperref[imm.i:decode]{imm\_i})), pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
lh & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lh]{Load Halfword} & {\tt rd $\leftarrow$ sx(m16(rs1+sx(imm))), pc $\leftarrow$ pc+4}\\
|
lh & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lh]{Load Halfword} & {\tt rd $\leftarrow$ sx(m16(rs1+\hyperref[imm.i:decode]{imm\_i})), pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
lhu & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lhu]{Load Halfword Unsigned} & {\tt rd $\leftarrow$ zx(m16(rs1+sx(imm))), pc $\leftarrow$ pc+4}\\
|
lhu & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lhu]{Load Halfword Unsigned} & {\tt rd $\leftarrow$ zx(m16(rs1+\hyperref[imm.i:decode]{imm\_i})), pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
lui & rd, imm & \hyperref[insnformat:utype]{U} & \hyperref[insn:lui]{Load Upper Immediate} & {\tt rd $\leftarrow$ zr(imm), pc $\leftarrow$ pc+4}\\
|
lui & rd, imm & \hyperref[insnformat:utype]{U} & \hyperref[insn:lui]{Load Upper Immediate} & {\tt rd $\leftarrow$ \hyperref[imm.u:decode]{imm\_u}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
lw & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lw]{Load Word} & {\tt rd $\leftarrow$ sx(m32(rs1+sx(imm))), pc $\leftarrow$ pc+4}\\
|
lw & rd, imm(rs1) & \hyperref[insnformat:itype]{I} & \hyperref[insn:lw]{Load Word} & {\tt rd $\leftarrow$ sx(m32(rs1+\hyperref[imm.i:decode]{imm\_i})), pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
or & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:or]{Or} & {\tt rd $\leftarrow$ rs1 | rs2, pc $\leftarrow$ pc+4}\\
|
or & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:or]{Or} & {\tt rd $\leftarrow$ rs1 | rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
ori & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:ori]{Or Immediate} & {\tt rd $\leftarrow$ rs1 | sx(imm), pc $\leftarrow$ pc+4}\\
|
ori & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:ori]{Or Immediate} & {\tt rd $\leftarrow$ rs1 | \hyperref[imm.i:decode]{imm\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sb & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sb]{Store Byte} & {\tt m8(rs1+sx(imm)) $\leftarrow$ rs2[7:0], pc $\leftarrow$ pc+4}\\
|
sb & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sb]{Store Byte} & {\tt m8(rs1+\hyperref[imm.s:decode]{imm\_s}) $\leftarrow$ rs2[7:0], pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sh & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sh]{Store Halfword} & {\tt m16(rs1+sx(imm)) $\leftarrow$ rs2[15:0], pc $\leftarrow$ pc+4}\\
|
sh & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sh]{Store Halfword} & {\tt m16(rs1+\hyperref[imm.s:decode]{imm\_s}) $\leftarrow$ rs2[15:0], pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sll & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sll]{Shift Left Logical} & {\tt rd $\leftarrow$ rs1 << rs2, pc $\leftarrow$ pc+4}\\
|
sll & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sll]{Shift Left Logical} & {\tt rd $\leftarrow$ rs1 << rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
slli & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:slli]{Shift Left Logical Immediate} & {\tt rd $\leftarrow$ rs1 << shamt, pc $\leftarrow$ pc+4}\\
|
slli & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:slli]{Shift Left Logical Immediate} & {\tt rd $\leftarrow$ rs1 << \hyperref[shamt.i:decode]{shamt\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
slt & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:slt]{Set Less Than} & {\tt rd $\leftarrow$ (rs1 < rs2) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
slt & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:slt]{Set Less Than} & {\tt rd $\leftarrow$ (rs1 < rs2) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
slti & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:slti]{Set Less Than Immediate} & {\tt rd $\leftarrow$ (rs1 < sx(imm)) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
slti & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:slti]{Set Less Than Immediate} & {\tt rd $\leftarrow$ (rs1 < \hyperref[imm.i:decode]{imm\_i}) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sltiu & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:sltiu]{Set Less Than Immediate Unsigned} & {\tt rd $\leftarrow$ (rs1 < sx(imm)) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
sltiu & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:sltiu]{Set Less Than Immediate Unsigned} & {\tt rd $\leftarrow$ (rs1 < \hyperref[imm.i:decode]{imm\_i}) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sltu & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sltu]{Set Less Than Unsigned} & {\tt rd $\leftarrow$ (rs1 < rs2) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
sltu & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sltu]{Set Less Than Unsigned} & {\tt rd $\leftarrow$ (rs1 < rs2) ? 1 : 0, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sra & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sra]{Shift Right Arithmetic} & {\tt rd $\leftarrow$ rs1 >> rs2, pc $\leftarrow$ pc+4}\\
|
sra & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sra]{Shift Right Arithmetic} & {\tt rd $\leftarrow$ rs1 >> rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
srai & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:srai]{Shift Right Arithmetic Immediate} & {\tt rd $\leftarrow$ rs1 >> shamt, pc $\leftarrow$ pc+4}\\
|
srai & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:srai]{Shift Right Arithmetic Immediate} & {\tt rd $\leftarrow$ rs1 >> \hyperref[shamt.i:decode]{shamt\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
srl & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:srl]{Shift Right Logical} & {\tt rd $\leftarrow$ rs1 >> rs2, pc $\leftarrow$ pc+4}\\
|
srl & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:srl]{Shift Right Logical} & {\tt rd $\leftarrow$ rs1 >> rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
srli & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:srli]{Shift Right Logical Immediate} & {\tt rd $\leftarrow$ rs1 >> shamt, pc $\leftarrow$ pc+4}\\
|
srli & rd, rs1, shamt & \hyperref[insnformat:itype]{I} & \hyperref[insn:srli]{Shift Right Logical Immediate} & {\tt rd $\leftarrow$ rs1 >> \hyperref[shamt.i:decode]{shamt\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sub & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sub]{Subtract} & {\tt rd $\leftarrow$ rs1 - rs2, pc $\leftarrow$ pc+4}\\
|
sub & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:sub]{Subtract} & {\tt rd $\leftarrow$ rs1 - rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
sw & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sw]{Store Word} & {\tt m32(rs1+sx(imm)) $\leftarrow$ rs2[31:0], pc $\leftarrow$ pc+4}\\
|
sw & rs2, imm(rs1) & \hyperref[insnformat:stype]{S} & \hyperref[insn:sw]{Store Word} & {\tt m32(rs1+\hyperref[imm.s:decode]{imm\_s}) $\leftarrow$ rs2[31:0], pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
xor & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:xor]{Exclusive Or} & {\tt rd $\leftarrow$ rs1 \^{} rs2, pc $\leftarrow$ pc+4}\\
|
xor & rd, rs1, rs2 & \hyperref[insnformat:rtype]{R} & \hyperref[insn:xor]{Exclusive Or} & {\tt rd $\leftarrow$ rs1 \^{} rs2, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
xori & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:xori]{Exclusive Or Immediate} & {\tt rd $\leftarrow$ rs1 \^{} sx(imm), pc $\leftarrow$ pc+4}\\
|
xori & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:xori]{Exclusive Or Immediate} & {\tt rd $\leftarrow$ rs1 \^{} \hyperref[imm.i:decode]{imm\_i}, pc $\leftarrow$ pc+4}\\
|
||||||
\hline
|
\hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
}
|
}
|
||||||
@ -88,5 +88,5 @@ xori & rd, rs1, imm & \hyperref[insnformat:itype]{I} & \hyperref[insn:xori]{Ex
|
|||||||
\newpage
|
\newpage
|
||||||
{\Large RV32I Base Instruction Set Encoding}~\cite[p.~104]{rvismv1v22:2017}
|
{\Large RV32I Base Instruction Set Encoding}~\cite[p.~104]{rvismv1v22:2017}
|
||||||
|
|
||||||
\DrawAllInsnTypes\\
|
%\DrawAllInsnTypes\\
|
||||||
\DrawAllInsnOps
|
\DrawAllInsnOps
|
||||||
|
@ -273,8 +273,8 @@ This simplification can also allow it operate faster.
|
|||||||
\DrawInsnTypeUTikz{00000000000000000000000000000000}\\
|
\DrawInsnTypeUTikz{00000000000000000000000000000000}\\
|
||||||
\DrawInsnTypeJTikz{00000000000000000000000000000000}\\
|
\DrawInsnTypeJTikz{00000000000000000000000000000000}\\
|
||||||
\DrawInsnTypeITikz{00000000000000000000000000000000}\\
|
\DrawInsnTypeITikz{00000000000000000000000000000000}\\
|
||||||
|
\DrawInsnTypeIShiftTikz{00000000000000000000000000000000}\\
|
||||||
\DrawInsnTypeSTikz{00000000000000000000000000000000}\\
|
\DrawInsnTypeSTikz{00000000000000000000000000000000}\\
|
||||||
\DrawInsnTypeRShiftTikz{00000000000000000000000000000000}\\
|
|
||||||
\DrawInsnTypeRTikz{00000000000000000000000000000000}
|
\DrawInsnTypeRTikz{00000000000000000000000000000000}
|
||||||
\captionof{figure}{RISC-V instruction formats.}
|
\captionof{figure}{RISC-V instruction formats.}
|
||||||
\label{Figure:riscvFormats}
|
\label{Figure:riscvFormats}
|
||||||
@ -301,7 +301,7 @@ the LSBs as discussed in \autoref{extension:zr}.
|
|||||||
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
||||||
and converted as shown below.
|
and converted as shown below.
|
||||||
|
|
||||||
\DrawInsnOpUTypeDecoding
|
\label{imm.u:decode}\DrawInsnOpUTypeDecoding
|
||||||
|
|
||||||
%If \Gls{xlen}=32 then the imm value in this example will be
|
%If \Gls{xlen}=32 then the imm value in this example will be
|
||||||
%converted as shown below.
|
%converted as shown below.
|
||||||
@ -364,7 +364,7 @@ value to \Gls{xlen} bits as discussed in \autoref{extension:slzr}.
|
|||||||
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
||||||
and converted as shown below.
|
and converted as shown below.
|
||||||
|
|
||||||
\DrawInsnOpJTypeDecoding
|
\label{imm.j:decode}\DrawInsnOpJTypeDecoding
|
||||||
|
|
||||||
%\DrawBitBoxSignLeftZeroRightExtendedPicture{32}{01000000110111001001}{1}
|
%\DrawBitBoxSignLeftZeroRightExtendedPicture{32}{01000000110111001001}{1}
|
||||||
%
|
%
|
||||||
@ -383,18 +383,11 @@ counter. Since no instruction can be placed at an odd address the 20-bit
|
|||||||
imm value is zero-extended to the right to represent a 21-bit signed offset
|
imm value is zero-extended to the right to represent a 21-bit signed offset
|
||||||
capable of representing numbers twice the magnitude of the 20-bit imm value.
|
capable of representing numbers twice the magnitude of the 20-bit imm value.
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{R Type}
|
\subsection{R Type}
|
||||||
\label{insnformat:rtype}
|
\label{insnformat:rtype}
|
||||||
\DrawInsnTypeRTikz{01000001111100011000001110110011}
|
\DrawInsnTypeRTikz{01000001111100011000001110110011}
|
||||||
|
|
||||||
A special case of the R-type used for shift-immediate instructions where
|
|
||||||
the {\em rs2} field is used as an immediate value named {\em shamt}
|
|
||||||
representing the number of bit positions to shift:
|
|
||||||
|
|
||||||
\DrawInsnTypeRShiftTikz{00000000001000011001001110100011}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{I Type}
|
\subsection{I Type}
|
||||||
\label{insnformat:itype}
|
\label{insnformat:itype}
|
||||||
@ -403,7 +396,14 @@ representing the number of bit positions to shift:
|
|||||||
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
||||||
and converted as shown below.
|
and converted as shown below.
|
||||||
|
|
||||||
\DrawInsnOpITypeDecoding
|
\label{imm.i:decode}\DrawInsnOpITypeDecoding
|
||||||
|
|
||||||
|
A special case of the I-type used for shift-immediate instructions where
|
||||||
|
the {\em imm} field is used as an immediate value named {\em shamt}
|
||||||
|
representing the number of bit positions to shift:
|
||||||
|
|
||||||
|
\label{shamt.i:decode}\DrawInsnOpIShiftTypeDecoding
|
||||||
|
%\DrawInsnTypeIShiftTikz{00000000001000011001001110100011}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{S Type}
|
\subsection{S Type}
|
||||||
@ -413,7 +413,7 @@ and converted as shown below.
|
|||||||
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
||||||
and converted as shown below.
|
and converted as shown below.
|
||||||
|
|
||||||
\DrawInsnOpSTypeDecoding
|
\label{imm.s:decode}\DrawInsnOpSTypeDecoding
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\subsection{B Type}
|
\subsection{B Type}
|
||||||
@ -423,7 +423,7 @@ and converted as shown below.
|
|||||||
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
If \Gls{xlen}=32 then the {\em imm} value example will extracted from the instruction
|
||||||
and converted as shown below.
|
and converted as shown below.
|
||||||
|
|
||||||
\DrawInsnOpBTypeDecoding
|
\label{imm.b:decode}\DrawInsnOpBTypeDecoding
|
||||||
|
|
||||||
|
|
||||||
%insnTypeF
|
%insnTypeF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user