Execute Computer/Zero: Difference between revisions
Content added Content deleted
m (J: more concise) |
m (J: maybe less concise overall but maybe easier to read (and relatively concise single line assembly)) |
||
Line 133: | Line 133: | ||
assemble=: {{ |
assemble=: {{ |
||
acc=: pc=: 0 |
acc=: pc=: 0 |
||
if. 0=L. y do. |
|||
delim=. {.((tolower y)-.(":i.10),;OPS),LF |
|||
y=. delim cut y |
|||
end. |
|||
code=. assemble1@> y |
|||
mem=: code (i.#code)} 32#0 |
mem=: code (i.#code)} 32#0 |
||
}} |
}} |
||
Line 160: | Line 164: | ||
With this implementation, we can assemble and run representations of the five suggested programs: |
With this implementation, we can assemble and run representations of the five suggested programs: |
||
<lang J> exec assemble 'LDA 3 |
<lang J> exec assemble 'LDA 3; ADD 4; STP; NOP 2; NOP 2' |
||
4 |
4 |
||
exec assemble |
exec assemble 'LDA 12; ADD 10; STA 12; LDA 11; SUB 13; STA 11; BRZ 8; JMP 0; LDA 12; STP 0; NOP 8; NOP 7; NOP 0; NOP 1' |
||
56 |
56 |
||
exec assemble |
exec assemble 'LDA 14; STA 15; ADD 13; STA 14; LDA 15; STA 13; LDA 16; SUB 17; BRZ 11; STA 16; JMP 0; LDA 14; STP 0; NOP 1; NOP 1; NOP 0; NOP 8; NOP 1' |
||
55 |
55 |
||
exec assemble |
exec assemble 'LDA 13; ADD 15; STA 5; ADD 16; STA 7; NOP 0; STA 14; NOP 0; BRZ 11; STA 15; JMP 0; LDA 14; STP 0; LDA 0; NOP 0; NOP 28; NOP 1; NOP 0; NOP 0; NOP 0; NOP 6; NOP 0; NOP 2; NOP 26; NOP 5; NOP 20; NOP 3; NOP 30; NOP 1; NOP 22; NOP 4; NOP 24' |
||
6 |
6 |
||
exec assemble |
exec assemble 'NOP 0; NOP 0; STP 0; NOP 0; LDA 3; SUB 29; BRZ 18; LDA 3; STA 29; BRZ 14; LDA 1; ADD 31; STA 1; JMP 2; LDA 0; ADD 31; STA 0; JMP 2; LDA 3; STA 29; LDA 1; ADD 30; ADD 3; STA 1; LDA 0; ADD 30; ADD 3; STA 0; JMP 2; NOP 0; NOP 1; NOP 3' |
||
0</lang> |
0</lang> |
||