1; assemble as "as -o reg-pa64 reg-pa64.s" 2; or 3; cc -g -o +DA2.0W 4; 5; PA-RISC 2.0 register contents test. 6; 7 .level 2.0W 8 9 .code 10 .export main,ENTRY 11 .export mainend,CODE 12 .export lab1,CODE 13 .space $TEXT$ 14 .subspa $CODE$ 15one 16 .align 8 17 .stringz "?\xF0\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00" 18 19main 20 .proc 21 .callinfo NO_CALLS,FRAME=0 22 .entry 23 24 ;; Test we have right register numbers 25 ;; 26 ADD %r0,%r0,%r1 ; 0 27 LDI 1,%r1 ; 1 28 ;; 29 ;; Don't put anything into r2 or r3--they are special registers. 30 ;; 31 ADD %r1,%r1,%r4 ; 2 32 ADD %r4,%r4,%r5 ; 4 33 ADD %r5,%r5,%r6 ; 8 34 ADD %r6,%r6,%r7 ; 16 35 ADD %r7,%r7,%r8 ; 32 36 ADD %r8,%r8,%r9 ; 64 37 ADD %r9,%r9,%r10 ; 128 38 ADD %r10,%r10,%r11 ; 256 39 ADD %r11,%r11,%r12 ; 512 40 ADD %r12,%r12,%r13 ; 1024 41 ADD %r13,%r13,%r14 ; 2048 42 ADD %r14,%r14,%r15 ; 4096 43 ADD %r15,%r15,%r16 ; 9192 44 45 ;; Test high bits, to be sure we show them. 46 ;; 47 LDI 0xde,%r19 ; "de" 48 DEPD,Z %r19,55,56,%r19 ; "de00" 49 LDI 0xad,%r18 ; "ad" 50 ADD %r18,%r19,%r19 ; "dead" 51 DEPD,Z %r19,55,56,%r19 ; "dead00" 52 LDI 0xbe,%r18 ; "be" 53 ADD %r18,%r19,%r19 ; "deadbe" 54 DEPD,Z %r19,55,56,%r19 ; "deadbe00" 55 LDI 0xef,%r18 ; "ef" 56 ADD %r18,%r19,%r19 ; "deadbeef" 57 ; 58 DEPD,Z %r19,55,56,%r19 ; "deadbeef00" 59 LDI 0xba,%r18 ; "ba" 60 ADD %r18,%r19,%r19 ; "deadbeefba" 61 DEPD,Z %r19,55,56,%r19 ; "deadbeefba00" 62 LDI 0xdc,%r18 ; "dc" 63 ADD %r18,%r19,%r19 ; "deadbeefbadc" 64 DEPD,Z %r19,55,56,%r19 ; "deadbeefbadc00" 65 LDI 0xad,%r18 ; "ad" 66 ADD %r18,%r19,%r19 ; "deadbeefbadcad" 67 DEPD,Z %r19,55,56,%r19 ; "deadbeefbadcad00" 68 LDI 0xee,%r18 ; "ee" 69 ADD %r18,%r19,%r19 ; "deadbeefbadcadee" 70 71lab1 ;; Test floating point registers 72 ;; 73 ;; LDIL LR'one,%r22 ; 74 ;; FLDD RR'one(%r22),%fr4 ; 1.0 75 ;; FLDD RR'one+8(%r22),%fr5 ; 2.0 76 ;; FLDD RR'one+8(%r22),%fr6 ; 2.0 77 B,L here,%r2 78 NOP 79here DEPDI 0x0,63,2,%r2 80 LDO one-here(%r2),%r2 81 FLDD 0(%r2),%fr4 82 FLDD 8(%r2),%fr5 83 FLDD 8(%r2),%fr6 84 85 FMPY,DBL %fr5,%fr6,%fr7 ; 4.0 86 FMPY,DBL %fr6,%fr7,%fr8 ; 8.0 87 FMPY,DBL %fr7,%fr8,%fr9 ; 32.0 88 FMPY,DBL %fr8,%fr9,%fr10 ; 256.0 89 90 ;; The NOP prevents anything from end.o or crt0.o from 91 ;; being appended immediately after "mainend". If that 92 ;; happens, then we may have other labels that have the 93 ;; same address as "mainend", and thus the debugger 94 ;; may symbolize this PC to something other than "mainend". 95mainend 96 NOP 97 .exit 98 .procend 99 100 .space $TEXT$ 101 .subspa $CODE$ 102 .subspa $LIT$ ;; <don't use> ,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 103 .end 104 105