Files

95 lines
1.3 KiB
Plaintext
Raw Permalink Normal View History

/*
* 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;