43 lines
572 B
ArmAsm
43 lines
572 B
ArmAsm
#include "macros.inc"
|
|
|
|
.global _start
|
|
|
|
.text
|
|
_start:
|
|
/* Initialize registers */
|
|
RESET
|
|
|
|
movd $0x4000, (sp)
|
|
begin:
|
|
/* todo: test all addressing modes here somehow */
|
|
|
|
// registers
|
|
// register pairs
|
|
// immediate
|
|
// relative (disp variants) modes
|
|
// absolute
|
|
// (uh oh) index
|
|
/** BAL **/
|
|
bal (ra), sub1
|
|
|
|
movw $0x1234, r1
|
|
movw $0x4242, r2
|
|
bal (ra), sub2
|
|
EXPECT 0x1234, r1
|
|
EXPECT 0x4242, r2
|
|
|
|
ENDING
|
|
FAIL_HANDLER
|
|
|
|
sub1:
|
|
jump (ra) /* should return */
|
|
FAIL
|
|
|
|
|
|
sub2:
|
|
PUSH $0x2, r1, ra
|
|
movw $-1, r1
|
|
movw $-1, r2
|
|
POPRET $0x2, r1, ra /* should return */
|
|
FAIL
|
|
|