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>