diff --git a/layouts/shortcodes/instruction.md b/layouts/shortcodes/instruction.md new file mode 100644 index 0000000..22e8bb4 --- /dev/null +++ b/layouts/shortcodes/instruction.md @@ -0,0 +1,94 @@ +{{- /* +instruction - Standardized instruction reference card, following the layout +used in the Patt & Patel textbook: mnemonic title, short description, assembler +formats, encoding diagram, high-level operation, and usage examples. + +@param {string} mnemonic Instruction mnemonic(s), comma-separated if more + than one (e.g. "ADD" or "JSR, JSRR"). +@param {string} short Short two-to-three word description (e.g. + "Addition"). +@param {string} formats Assembler format(s). Use a backtick-quoted + string for multiple lines. +@param {string} encoding Filename of the encoding diagram +@param {string} encoding-dark Optional dark mode variant of the encoding + diagram. If set, `encoding` is only shown in + light mode and this is shown in dark mode. +@param {string} operation High-level operation, typically pseudo-C. Use a + backtick-quoted string for multiple lines. +@param {string} examples Usage examples in LC-2 assembly. Use a + backtick-quoted string for multiple lines. + +@example {{% instruction + mnemonic="ADD" + short="Addition" + + formats=`ADD DR, SR1, SR2 +ADD DR, SR1, imm5` + + encoding="add.drawio.png" + encoding-dark="add-dark.drawio.png" + + operation=`if (bit[5] == 0) { + DR = SR1 + SR2; +} else { + DR = SR1 + SEXT(imm5); +} + +setcc(DR);` + + examples=`ADD R2, R3, R4 ; R2 ← R3 + R4 +ADD R2, R3, #7 ; R2 ← R3 + 7` + +%}} +If bit [5] is 0, the second-source operand is obtained from SR2. If bit [5] is +1, the second-source operand is obtained by sign-extending the imm5 field to 16 +bits. In both cases, the second source operand is added to the contents of SR1, +and the result stored in DR. The condition codes are set, based on whether the +result is negative, zero, or positive. +{{% /instruction %}} + +*/ -}} + +{{- $mnemonic := .Get "mnemonic" -}} +{{- $short := .Get "short" -}} +{{- $formats := .Get "formats" -}} +{{- $encoding := .Get "encoding" -}} +{{- $encodingDark := .Get "encoding-dark" -}} +{{- $operation := .Get "operation" -}} +{{- $examples := .Get "examples" -}} +{{- $description := .Inner -}} + +### {{ $mnemonic }} + +> {{ $short }} + +