95 lines
1.3 KiB
Plaintext
95 lines
1.3 KiB
Plaintext
/*
|
|
* 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;
|
|
|