;; s30 dual core ;; show two cores run different program ;; use sync to sync two cores .symbol stop 0 print1 17 print2 18 cpuid 5 sync 25 ;; global registers sp 28 ;; system stack pointer retval 27 link 15 ;; must be r1..r15 .code 0 mv sp #1700 ;; sp = &1700 trap cpuid eq r2 retval #0 jt r2 p1 jmp p2 ;; ------------- user program ----------- ;; p1() ;; i = 0 ;; while i < 5 ;; print i ;; i++ ;; sync ;; stop :p1 ;; count 1..4 mv r2 r0 ;; r2 : i :loop3 lt r3 r2 #5 ;; i < 5 ? jf r3 exit3 mv r1 r2 trap print1 add r2 r2 #1 jmp loop3 :exit3 trap sync trap stop ;; p2() ;; i = 10 ;; while i < 20 ;; print i ;; i++ ;; sync ;; stop :p2 ;; count 10..19 mv r2 #10 ;; r2 : i :loop4 lt r3 r2 #20 ;; i < 20 ? jf r3 exit4 mv r1 r2 trap print2 add r2 r2 #1 jmp loop4 :exit4 trap sync trap stop .end