Annotation of gforth/arch/alpha/asm.fs, revision 1.1
1.1 ! anton 1: \ bernd thallner 9725890 881
! 2: \ assembler in forth for alpha
! 3:
! 4: \ requires code.fs
! 5:
! 6: also assembler definitions
! 7:
! 8: $0 constant v0
! 9: $1 constant t0
! 10: $2 constant t1
! 11: $3 constant t2
! 12: $4 constant t3
! 13: $5 constant t4
! 14: $6 constant t5
! 15: $7 constant t6
! 16: $8 constant t7
! 17: $9 constant s0
! 18: $a constant s1
! 19: $b constant s2
! 20: $c constant s3
! 21: $d constant s4
! 22: $e constant s5
! 23: $f constant fp
! 24: $10 constant a0
! 25: $11 constant a1
! 26: $12 constant a2
! 27: $13 constant a3
! 28: $14 constant a4
! 29: $15 constant a5
! 30: $16 constant t8
! 31: $17 constant t9
! 32: $18 constant t10
! 33: $19 constant t11
! 34: $1a constant ra
! 35: $1b constant t12
! 36: $1c constant at
! 37: $1d constant gp
! 38: $1e constant sp
! 39: $1f constant zero
! 40:
! 41: : shift ( a n -- a<<=n )
! 42: 0
! 43: ?do
! 44: 2*
! 45: loop
! 46: ;
! 47:
! 48: : h, ( h -- ) \ 32 bit store
! 49: here here aligned = if
! 50: here !
! 51: else
! 52: 32 shift
! 53: here 4 - dup
! 54: @ rot or
! 55: swap !
! 56: endif
! 57: 4 allot
! 58: ;
! 59:
! 60: : Bra ( oo ) \ branch instruction format
! 61: create ,
! 62: does> ( ra, branch_disp, addr )
! 63: @ 26 shift
! 64: swap $1fffff and or
! 65: swap $1f and 21 shift or h,
! 66: ;
! 67:
! 68: : Mbr ( oo.h ) \ memory branch instruction format
! 69: create 2,
! 70: does> ( ra, rb, hint, addr )
! 71: 2@ 14 shift
! 72: swap 26 shift or
! 73: swap $3fff and or
! 74: swap $1f and 16 shift or
! 75: swap $1f and 21 shift or
! 76: h,
! 77: ;
! 78:
! 79: : F-P ( oo.fff ) \ floating-point operate instruction format
! 80: create 2,
! 81: does> ( fa, fb, fc, addr )
! 82: 2@ 5 shift
! 83: swap 26 shift or
! 84: swap $1f and or
! 85: swap $1f and 16 shift or
! 86: swap $1f and 21 shift or
! 87: h,
! 88: ;
! 89:
! 90: : Mem ( oo ) \ memory instruction format
! 91: create ,
! 92: does> ( ra, memory_disp, rb, addr )
! 93: @ 26 shift
! 94: swap $1f and 16 shift or
! 95: swap $ffff and or
! 96: swap $1f and 21 shift or
! 97: h,
! 98: ;
! 99:
! 100: : Mfc ( oo.ffff ) \ memory instruction with function code format
! 101: create 2,
! 102: does> ( ra, rb, addr )
! 103: 2@
! 104: swap 26 shift or
! 105: swap $1f and 16 shift or
! 106: swap $1f and 21 shift or
! 107: h,
! 108: ;
! 109:
! 110: : Opr ( oo.ff ) \ operate instruction format
! 111: create 2,
! 112: does> ( ra, rb, rc, addr )
! 113: 2@
! 114: 5 shift
! 115: swap 26 shift or
! 116: swap $1f and or
! 117: swap $1f and 16 shift or
! 118: swap $1f and 21 shift or
! 119: h,
! 120: ;
! 121:
! 122: : Opr# ( oo.ff ) \ operate instruction format
! 123: create 2,
! 124: does> ( ra, lit, rc, addr )
! 125: 2@
! 126: 5 shift
! 127: swap 26 shift or
! 128: 1 12 shift or
! 129: swap $1f and or
! 130: swap $ff and 13 shift or
! 131: swap $1f and 21 shift or
! 132: h,
! 133: ;
! 134:
! 135: : Pcd ( oo ) \ palcode instruction format
! 136: create ,
! 137: does> ( palcode, addr )
! 138: @ 26 shift
! 139: swap $3ffffff and or
! 140: h,
! 141: ;
! 142:
! 143: $15 $80 F-P addf,
! 144: $15 $a0 F-P addg,
! 145: $10 $00 Opr addl,
! 146: $10 $00 Opr# addl#,
! 147: $10 $40 Opr addlv,
! 148: $10 $40 Opr# addlv#,
! 149: $10 $20 Opr addq,
! 150: $10 $20 Opr# addq#,
! 151: $10 $60 Opr addqv,
! 152: $10 $60 Opr# addqv#,
! 153: $16 $80 F-P adds,
! 154: $16 $a0 F-P addt,
! 155: $11 $00 Opr and,
! 156: $11 $00 Opr# and#,
! 157: $39 Bra beq,
! 158: $3e Bra bge,
! 159: $3f Bra bgt,
! 160: $11 $08 Opr bic,
! 161: $11 $08 Opr# bic#,
! 162: $11 $20 Opr bis,
! 163: $11 $20 Opr# bis#,
! 164: $38 Bra blbc,
! 165: $3c Bra blbs,
! 166: $3b Bra ble,
! 167: $3a Bra blt,
! 168: $3d Bra bne,
! 169: $30 Bra br,
! 170: $34 Bra bsr,
! 171: $00 Pcd call_pal,
! 172: $11 $24 Opr cmoveq,
! 173: $11 $24 Opr# cmoveq#,
! 174: $11 $46 Opr cmovge,
! 175: $11 $46 Opr# cmovge#,
! 176: $11 $66 Opr cmovgt,
! 177: $11 $66 Opr# cmovgt#,
! 178: $11 $16 Opr cmovlbc,
! 179: $11 $16 Opr# cmovlbc#,
! 180: $11 $14 Opr cmovlbs,
! 181: $11 $14 Opr# cmovlbs#,
! 182: $11 $64 Opr cmovle,
! 183: $11 $64 Opr# cmovle#,
! 184: $11 $44 Opr cmovlt,
! 185: $11 $44 Opr# cmovlt#,
! 186: $11 $26 Opr cmovne,
! 187: $11 $26 Opr# cmovne#,
! 188: $10 $0f Opr cmpbge,
! 189: $10 $0f Opr# cmpbge#,
! 190: $10 $2d Opr cmpeq,
! 191: $10 $2d Opr# cmpeq#,
! 192: $15 $a5 F-P cmpgeq,
! 193: $15 $a7 F-P cmpgle,
! 194: $15 $a6 F-P cmpglt,
! 195: $10 $6d Opr cmple,
! 196: $10 $6d Opr# cmple#,
! 197: $10 $4d Opr cmplt,
! 198: $10 $4d Opr# cmplt#,
! 199: $16 $a5 F-P cmpteq,
! 200: $16 $a7 F-P cmptle,
! 201: $16 $a6 F-P cmptlt,
! 202: $16 $a4 F-P cmptun,
! 203: $10 $3d Opr cmpule,
! 204: $10 $3d Opr# cmpule#,
! 205: $10 $1d Opr cmpult,
! 206: $10 $1d Opr# cmpult#,
! 207: $17 $20 F-P cpys,
! 208: $17 $22 F-P cpyse,
! 209: $17 $21 F-P cpysn,
! 210: $15 $9e F-P cvtdg,
! 211: $15 $ad F-P cvtgd,
! 212: $15 $ac F-P cvtgf,
! 213: $15 $af F-P cvtgq,
! 214: $17 $10 F-P cvtlq,
! 215: $15 $bc F-P cvtqf,
! 216: $15 $be F-P cvtqg,
! 217: $17 $30 F-P cvtql,
! 218: $17 $530 F-P cvtqlsv,
! 219: $17 $130 F-P cvtqlv,
! 220: $16 $bc F-P cvtqs,
! 221: $16 $be F-P cvtqt,
! 222: $16 $2ac F-P cvtst,
! 223: $16 $af F-P cvttq,
! 224: $16 $ac F-P cvtts,
! 225: $15 $83 F-P divf,
! 226: $15 $a3 F-P divg,
! 227: $16 $83 F-P divs,
! 228: $16 $a3 F-P divt,
! 229: $11 $48 Opr eqv,
! 230: $11 $48 Opr# eqv#,
! 231: $18 $400 Mfc excb,
! 232: $12 $06 Opr extbl,
! 233: $12 $06 Opr# extbl#,
! 234: $12 $6a Opr extlh,
! 235: $12 $6a Opr# extlh#,
! 236: $12 $26 Opr extll,
! 237: $12 $26 Opr# extll#,
! 238: $12 $7a Opr extqh,
! 239: $12 $7a Opr# extqh#,
! 240: $12 $36 Opr extql,
! 241: $12 $36 Opr# extql#,
! 242: $12 $5a Opr extwh,
! 243: $12 $5a Opr# extwh#,
! 244: $12 $16 Opr extwl,
! 245: $12 $16 Opr# extwl#,
! 246: $31 Bra fbeq,
! 247: $36 Bra fbge,
! 248: $37 Bra fbgt,
! 249: $33 Bra fble,
! 250: $32 Bra fblt,
! 251: $35 Bra fbne,
! 252: $17 $2a F-P fcmoveq,
! 253: $17 $2d F-P fcmovge,
! 254: $17 $2f F-P fcmovgt,
! 255: $17 $2e F-P fcmovle,
! 256: $17 $2c F-P fcmovlt,
! 257: $17 $2b F-P fcmovne,
! 258: $18 $8000 Mfc fetch,
! 259: $18 $a000 Mfc fetch_m,
! 260: $12 $0b Opr insbl,
! 261: $12 $0b Opr# insbl#,
! 262: $12 $67 Opr inslh,
! 263: $12 $67 Opr# inslh#,
! 264: $12 $2b Opr insll,
! 265: $12 $2b Opr# insll#,
! 266: $12 $77 Opr insqh,
! 267: $12 $77 Opr# insqh#,
! 268: $12 $3b Opr insql,
! 269: $12 $3b Opr# insql#,
! 270: $12 $57 Opr inswh,
! 271: $12 $57 Opr# inswh#,
! 272: $12 $1b Opr inswl,
! 273: $12 $1b Opr# inswl#,
! 274: $1a $00 Mbr jmp,
! 275: $1a $01 Mbr jsr,
! 276: $1a $03 Mbr jsr_coroutine,
! 277: $08 Mem lda,
! 278: $09 Mem ldah,
! 279: $20 Mem ldf,
! 280: $21 Mem ldg,
! 281: $28 Mem ldl,
! 282: $2a Mem ldl_l,
! 283: $29 Mem ldq,
! 284: $2b Mem ldq_l,
! 285: $0b Mem ldq_u,
! 286: $22 Mem lds,
! 287: $23 Mem ldt,
! 288: $18 $4000 Mfc mb,
! 289: $17 $25 F-P mf_fpcr,
! 290: $12 $02 Opr mskbl,
! 291: $12 $02 Opr# mskbl#,
! 292: $12 $62 Opr msklh,
! 293: $12 $62 Opr# msklh#,
! 294: $12 $22 Opr mskll,
! 295: $12 $22 Opr# mskll#,
! 296: $12 $72 Opr mskqh,
! 297: $12 $72 Opr# mskqh#,
! 298: $12 $32 Opr mskql,
! 299: $12 $32 Opr# mskql#,
! 300: $12 $52 Opr mskwh,
! 301: $12 $52 Opr# mskwh#,
! 302: $12 $12 Opr mskwl,
! 303: $12 $12 Opr# mskwl#,
! 304: $17 $24 F-P mt_fpcr,
! 305: $15 $82 F-P mulf,
! 306: $15 $a2 F-P mulg,
! 307: $13 $00 Opr mull,
! 308: $13 $00 Opr# mull#,
! 309: $13 $40 Opr mullv,
! 310: $13 $40 Opr# mullv#,
! 311: $13 $20 Opr mullq,
! 312: $13 $20 Opr# mullq#,
! 313: $13 $60 Opr mullqv,
! 314: $13 $60 Opr# mullqv#,
! 315: $16 $82 F-P mulls,
! 316: $16 $a2 F-P mullt,
! 317: $11 $28 Opr ornot,
! 318: $11 $28 Opr# ornot#,
! 319: $18 $e000 Mfc rc,
! 320: $1a $02 Mbr ret,
! 321: $18 $c000 Mfc rpcc,
! 322: $18 $f000 Mfc rs,
! 323: $10 $02 Opr s4addl,
! 324: $10 $02 Opr# s4addl#,
! 325: $10 $22 Opr s4addq,
! 326: $10 $22 Opr# s4addq#,
! 327: $10 $0b Opr s4subl,
! 328: $10 $0b Opr# s4subl#,
! 329: $10 $2b Opr s4subq,
! 330: $10 $2b Opr# s4subq#,
! 331: $10 $12 Opr s8addl,
! 332: $10 $12 Opr# s8addl#,
! 333: $10 $32 Opr s8addq,
! 334: $10 $32 Opr# s8addq#,
! 335: $10 $1b Opr s8ubl,
! 336: $10 $1b Opr# s8ubl#,
! 337: $10 $3b Opr s8ubq,
! 338: $10 $3b Opr# s8ubq#,
! 339: $12 $39 Opr sll,
! 340: $12 $39 Opr# sll#,
! 341: $12 $3c Opr sra,
! 342: $12 $3c Opr# sra#,
! 343: $12 $34 Opr srl,
! 344: $12 $34 Opr# srl#,
! 345: $24 Mem stf,
! 346: $25 Mem stg,
! 347: $26 Mem sts,
! 348: $2c Mem stl,
! 349: $2e Mem stl_c,
! 350: $2d Mem stq,
! 351: $2f Mem stq_c,
! 352: $0f Mem stq_u,
! 353: $27 Mem stt,
! 354: $15 $81 F-P subf,
! 355: $15 $a1 F-P subg,
! 356: $10 $09 Opr subl,
! 357: $10 $09 Opr# subl#,
! 358: $10 $49 Opr sublv,
! 359: $10 $49 Opr# sublv#,
! 360: $10 $29 Opr subq,
! 361: $10 $29 Opr# subq#,
! 362: $10 $69 Opr subqv,
! 363: $10 $69 Opr# subqv#,
! 364: $16 $81 F-P subs,
! 365: $16 $a1 F-P subt,
! 366: $18 $00 Mfc trapb,
! 367: $13 $30 Opr umulh,
! 368: $13 $30 Opr# umulh#,
! 369: $18 $4400 Mfc wmb,
! 370: $11 $40 Opr xor,
! 371: $11 $40 Opr# xor#,
! 372: $12 $30 Opr zap,
! 373: $12 $30 Opr# zap#,
! 374: $12 $31 Opr zapnot,
! 375: $12 $31 Opr# zapnot#,
! 376:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>