📄 ppc_isa.defs
字号:
## The PowerPC defs file to be run through developers/mnemonicizer.awk## Copyright (c) 2002 The University of Utah and the Flux Group.# All rights reserved.## @JANOSVM_KAFFE_JANOSVM_LICENSE@## File/define prefixprefix ppcopcode_type unsigned long## Registers and their attributes#registers 32float_registers 32# Prologue temporary and zero registerregister_attribute 0 0 Reserved# Stack pointerregister_attribute 1 1 Reserved# Reservedregister_attribute 2 2 Reserved# Localsregister_attribute 11 30 Rint|Rref Rglobal|Rnosaveoncallregister_attribute 31 31 Reserved# Zero register (?)float_register_attribute 0 0 Reserved# Localsfloat_register_attribute 14 31 Rfloat|Rdouble Rnosaveoncall## ABI register conventions#register_alias sp 1register_alias toc 2register_alias arg0 3register_alias arg1 4register_alias arg2 5register_alias arg3 6register_alias arg4 7register_alias arg5 8register_alias arg6 9register_alias arg7 10register_alias const_pool 31register_alias function_base 31register_alias ret 3register_alias rethi 3register_alias retlo 4float_register_alias arg0 1float_register_alias arg1 2float_register_alias arg2 3float_register_alias arg3 4float_register_alias arg4 5float_register_alias arg5 6float_register_alias arg6 7float_register_alias arg7 8float_register_alias arg8 9float_register_alias arg9 10float_register_alias arg10 11float_register_alias arg11 12float_register_alias arg12 13float_register_alias ret 1float_register_alias rethi 1float_register_alias retlo 2## Opcode fields:name start end#op_field bd 16 29op_field bi 11 15op_field bo 6 10op_field crba 11 15op_field crbb 16 20op_field crbd 6 10op_field crfd 6 8op_field crfs 11 13op_field crm 12 19op_field d 16 31op_field fm 7 14op_field fra 11 15op_field frb 16 20op_field frc 21 25op_field frd 6 10op_field frs 6 10op_field imm 16 19op_field li 6 29op_field mb 21 25op_field me 26 30op_field nb 16 20op_field opcd 0 5op_field ra 11 15op_field rb 16 20op_field rd 6 10op_field rs 6 10op_field sh 16 20op_field simm 16 31op_field sr 12 15op_field to 6 10op_field uimm 16 31## Single bit opcode options#op_option aa 30op_option l 10op_option lk 31op_option oe 21op_option rc 31## Reserved bits#op_option res31 31## Bit sequences for branch options#bits bo_decr_ne_false 0000ybits bo_decr_eq_false 0001ybits bo_false 001zybits bo_decr_ne_true 0100ybits bo_decr_eq_true 0101ybits bo_true 011zybits bo_decr_ne 1z00ybits bo_decr_eq 1z01ybits bo_always 1z1zz## Bit sequences for branch conditions#bits bi_lt 00000bits bi_gt 00001bits bi_eq 00010bits bi_so 00011bits bi_cr_0 00000bits bi_cr_1 00100bits bi_cr_2 01000bits cr_0 000bits cr_1 001bits cr_2 010bits cr_3 011bits cr_4 100bits cr_5 101bits cr_6 110bits cr_7 111bits spr_xer 00001bits spr_lr 01000bits spr_ctr 01001## Opcode definitions#// rd = ra + rbop add opcd(31) rd ra rb oe 266 rcop addc opcd(31) rd ra rb oe 10 rcop adde opcd(31) rd ra rb oe 138 rcop addi opcd(14) rd ra simmop addic opcd(12) rd ra simm# op addic. opcd(13) rd ra simmop addis opcd(15) rd ra simmop addme opcd(31) rd ra 0 oe 234 rcop addze opcd(31) rd ra 0 oe 202 rc# Note the reversal of ra/rs, I'd like to use the mnemonic ordering# instead of the instruction ordering. Everything is fine though, the# field locations are defined above and not here and this is# "somewhat" independent of the ordering here anyways. This same# thing is also done for slw, or, and xor.op and opcd(31) ra rs rb 28 rcop andc opcd(31) ra rs rb 60 rcop andi opcd(28) ra rs uimmop andis opcd(29) ra rs uimmop b opcd(18) li aa lkop bc opcd(16) bo bi bd aa lkop bcctr opcd(19) bo bi 528 lkop bctr opcd(19) bo(bo_always) bi(0) 528 lkop bctrl opcd(19) bo(bo_always) bi(0) 528 lk(1)op bclr opcd(19) bo bi 16 lkop blr opcd(19) bo(bo_always) bi(0) 16 lkop cmp opcd(31) crfd 0 l ra rb 0op cmpi opcd(11) crfd 0 l ra simmop cmpl opcd(31) crfd 0 l ra rb 32 res31op cmpli opcd(10) crfd 0 l ra uimmop divw opcd(31) rd ra rb oe 491 rcop divwu opcd(31) rd ra rb oe 459 rcop fabs opcd(63) frd 0 frb 264 rcop fadd opcd(63) frd fra frb 21 rcop fadds opcd(59) frd fra frb 21 rcop fctiw opcd(63) frd 0 frb 14 rcop fctiwz opcd(63) frd 0 frb 15 rcop fdiv opcd(63) frd fra frb 18 rcop fdivs opcd(59) frd fra frb 18 rcop fmul opcd(63) frd fra 0 frc 25 rcop fmuls opcd(59) frd fra 0 frc 25 rcop fneg opcd(63) frd 0 frb 40 rcop frsp opcd(63) frd 0 frb 12 rcop fsub opcd(63) frd fra frb 20 rcop fsubs opcd(59) frd fra frb 20 rcop fmr opcd(63) frd 0 frb 72 rcop lbz opcd(34) rd ra dop lbzu opcd(35) rd ra dop lbzux opcd(31) rd ra rb 119 res31op lbzx opcd(31) rd ra rb 87 res31op lfd opcd(50) rd ra dop lfdu opcd(51) rd ra dop lfdux opcd(31) rd ra rb 631 res31op lfdx opcd(31) rd ra rb 599 res31op lfs opcd(48) rd ra dop lfsu opcd(49) rd ra dop lfsux opcd(31) rd ra rb 567 res31op lfsx opcd(31) rd ra rb 535 res31op lha opcd(42) rd ra dop lhau opcd(43) rd ra dop lhaux opcd(31) rd ra rb 375 res31op lhax opcd(31) rd ra rb 343 res31op lhbrx opcd(31) rd ra rb 790 res31op lhz opcd(40) rd ra dop lhzu opcd(40) rd ra dop lhzux opcd(31) rd ra rb 311 res31op lhzx opcd(31) rd ra rb 279 res31op lmw opcd(46) rd ra dop lwz opcd(32) rd ra dop lwzu opcd(33) rd ra dop lwzux opcd(31) rd ra rb 55 res31op lwzx opcd(31) rd ra rb 23 res31op mfspr opcd(31) rd ra rb 339 res31op mflr opcd(31) rd ra(spr_lr) rb(0) 339 res31# or ra, rs, rsop mr opcd(31) ra rs rb(rs) 444 rcop mtspr opcd(31) rs ra rb 467 res31op mtctr opcd(31) rs ra(spr_ctr) rb(0) 467 res31op mtlr opcd(31) rs ra(spr_lr) rb(0) 467 res31op mulhw opcd(31) rd ra rb 75 rcop mulhwu opcd(31) rd ra rb 11 rcop mulli opcd(7) rd ra simmop mullw opcd(31) rd ra rb oe 235 rcop neg opcd(31) rd ra oe 104 rc# nop -> ori r0, r0, 0op nop opcd(24) ra(PPC_R0) rs(PPC_R0) 0op or opcd(31) ra rs rb 444 rcop orc opcd(31) ra rs rb 412 rcop ori opcd(24) ra rs uimmop oris opcd(24) ra rs uimmop rlwimi opcd(20) ra rs sh mb me rcop rlwinm opcd(21) ra rs sh mb me rcop slwi opcd(21) ra rs sh mb(0) me(31-sh) rcop slw opcd(31) ra rs rb 24 rcop sraw opcd(31) ra rs rb 792 rcop srawi opcd(31) ra rs sh 824 rcop srw opcd(31) ra rs rb 536 rcop stb opcd(38) rs ra dop stbu opcd(39) rs ra dop stbux opcd(31) rs ra rb 247 res31op stbx opcd(31) rs ra rb 215 res31op stfd opcd(54) rs ra dop stfdu opcd(55) rs ra dop stfdux opcd(31) rs ra rb 759 res31op stfdx opcd(31) rs ra rb 727 res31op stfs opcd(52) rs ra dop stfsu opcd(53) rs ra dop stfsux opcd(31) rs ra rb 695 res31op stfsx opcd(31) rs ra rb 663 res31op sth opcd(44) rs ra dop sthbrx opcd(31) rs ra rb 918 res31op sthu opcd(45) rs ra dop sthux opcd(31) rs ra rb 439 res31op sthx opcd(31) rs ra rb 407 res31op stmw opcd(47) rs ra dop stw opcd(36) rs ra dop stwu opcd(37) rs ra dop subf opcd(31) rd ra rb oe 40 rcop subfc opcd(31) rd ra rb oe 8 rcop subfe opcd(31) rd ra rb oe 136 rcop subfic opcd(8) rd ra simmop subfme opcd(31) rd ra 0 oe 232 rcop subfze opcd(31) rd ra 0 oe 200 rcop li opcd(14) rd ra(PPC_R0) simmop lis opcd(15) rd ra(PPC_R0) simmop xor opcd(31) ra rs rb 316 rcop xori opcd(26) ra rs uimmop xoris opcd(27) ra rs uimm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -