Where: decoder.zig and executor.zig at 976df51.
What happens.
- SACR takes its mode from the immediate, but the decoder never reads the immediate for SACR (
SACR_MODE_RULE in specs/isa/ternary_encoding.t27).
- Every decoded SACR therefore adds modulo 19683.
- Modes 2, 3 and 4 run only from
Instruction values the owner's tests construct directly.
Source: specs/isa/tri27_machine.t27, FINDINGS; the modes are in the spec's the_sacred_operation_modes test (line 400).
Expected.
- The encoding carries the SACR mode in a field the decoder reads.
- A test encodes and decodes SACR in every mode.
Vector. sacred in conformance/trinity/tri27_programs.json: the decoded SACR adds modulo 19683 whatever mode the source wrote.
Found while writing the S05 specs of #988 (gHashTag/t27#3581); until now it lived only in the spec's FINDINGS. The vectors are replayed by tools/trinity_tri27.py in gHashTag/t27. Tracked in #1164.
Where:
decoder.zigandexecutor.zigat 976df51.What happens.
SACR_MODE_RULEinspecs/isa/ternary_encoding.t27).Instructionvalues the owner's tests construct directly.Source:
specs/isa/tri27_machine.t27, FINDINGS; the modes are in the spec'sthe_sacred_operation_modestest (line 400).Expected.
Vector.
sacredinconformance/trinity/tri27_programs.json: the decoded SACR adds modulo 19683 whatever mode the source wrote.Found while writing the S05 specs of #988 (gHashTag/t27#3581); until now it lived only in the spec's FINDINGS. The vectors are replayed by
tools/trinity_tri27.pyin gHashTag/t27. Tracked in #1164.