Add real ADSP-2191 assembly examples + open21xx assembler test
This commit is contained in:
94
examples/isa_test.dsp
Normal file
94
examples/isa_test.dsp
Normal file
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* isa_test.dsp -- ADSP-219x ISA coverage test for disassembler validation.
|
||||
* Assembles with open21xx as219x.
|
||||
*/
|
||||
.section/PM program0;
|
||||
.global _start;
|
||||
_start:
|
||||
|
||||
/* Type 30: NOP */
|
||||
nop;
|
||||
|
||||
/* Type 6: Dreg = Imm16 */
|
||||
ax0 = 0x1234;
|
||||
ax1 = 0x5678;
|
||||
ay0 = 0xAAAA;
|
||||
mx0 = 0x4000;
|
||||
my0 = 0x2000;
|
||||
|
||||
/* Type 7: Reg1/Reg2 = Imm16 */
|
||||
i0 = 0x0100;
|
||||
i1 = 0x0200;
|
||||
i4 = 0x0300;
|
||||
m0 = 1;
|
||||
m1 = 1;
|
||||
m3 = -1;
|
||||
m4 = 1;
|
||||
l0 = 0;
|
||||
l4 = 0;
|
||||
cntr = 10;
|
||||
|
||||
/* Type 17: Reg = Reg */
|
||||
ar = ax0;
|
||||
si = ax1;
|
||||
mr0 = mx0;
|
||||
|
||||
/* Type 9: Conditional Compute */
|
||||
ar = ax0 + ay0;
|
||||
ar = ax0 - ay0;
|
||||
ar = ax0 and ay0;
|
||||
ar = ax0 or ay0;
|
||||
ar = ax0 xor ay0;
|
||||
ar = pass ax0;
|
||||
ar = -ax0;
|
||||
ar = abs ax0;
|
||||
mr = mx0 * my0 (ss);
|
||||
|
||||
/* Type 10: Direct Jump */
|
||||
jump _skip1;
|
||||
_skip1:
|
||||
nop;
|
||||
|
||||
/* Type 10: Conditional Jump */
|
||||
if eq jump _skip2;
|
||||
_skip2:
|
||||
nop;
|
||||
|
||||
/* Type 10: Call */
|
||||
call _sub1;
|
||||
jump _after_sub;
|
||||
|
||||
_sub1:
|
||||
nop;
|
||||
rts;
|
||||
|
||||
_after_sub:
|
||||
|
||||
/* Type 20: Return variants */
|
||||
nop;
|
||||
|
||||
/* Type 11: DO UNTIL */
|
||||
cntr = 4;
|
||||
do _loop_end until ce;
|
||||
nop;
|
||||
_loop_end:
|
||||
nop;
|
||||
|
||||
/* Type 15: Shift Immediate */
|
||||
sr = lshift si by 4 (hi);
|
||||
sr = ashift si by -2 (hi);
|
||||
|
||||
/* Type 18: Mode Control */
|
||||
dis ar_sat;
|
||||
ena ar_sat;
|
||||
|
||||
/* Type 25: Saturate */
|
||||
sat mr;
|
||||
|
||||
/* Type 33: Reg3 = short constant */
|
||||
se = 0;
|
||||
|
||||
/* Infinite loop */
|
||||
_halt:
|
||||
jump _halt;
|
||||
|
||||
Reference in New Issue
Block a user