class Metasm::MIPS64
Public Class Methods
new(endianness = :big, family = :latest)
click to toggle source
Calls superclass method
Metasm::MIPS.new
# File metasm/cpu/mips/main.rb, line 73 def initialize(endianness = :big, family = :latest) super(endianness, family) @size = 64 end
Public Instance Methods
init_mips64()
click to toggle source
# File metasm/cpu/mips/opcodes.rb, line 242 def init_mips64 init_mips32r2 @valid_props.update :mi64 => true addop 'ld', 0b110111 << 26, :rt, :rs_i16, :m64 addop 'lwu', 0b100111 << 26, :rt, :rs_i16 addop 'sd', 0b111111 << 26, :rt, :rs_i16, :m64 addop 'scd', 0b111100 << 26, :rt, :rs_i16, :m64 addop 'ldl', 0b011010 << 26, :rt, :rs_i16 addop 'ldr', 0b011011 << 26, :rt, :rs_i16 addop 'sdl', 0b101100 << 26, :rt, :rs_i16 addop 'sdr', 0b101101 << 26, :rt, :rs_i16 addop 'lld', 0b110100 << 26, :rt, :rs_i16 addop 'daddi', 0b011000 << 26, :rt, :rs, :i16 addop 'daddiu', 0b011001 << 26, :rt, :rs, :i16 addop 'dclo', (0b011100 << 26) | (0b100101), :rd, :rt, :rs addop 'dclz', (0b011100 << 26) | (0b100100), :rd, :rt, :rs addop 'dadd', 0b101100, :rd, :rs, :rt addop 'daddu', 0b101101, :rd, :rs, :rt addop 'dsub', 0b101110, :rd, :rs, :rt addop 'dsubu', 0b101111, :rd, :rs, :rt addop 'dsll', 0b111000, :rd, :rt, :sa addop 'dsll32', 0b111100, :rd, :rt, :sa addop 'dsllv', 0b010100, :rd, :rt, :rs addop 'dsra', 0b111011, :rd, :rt, :sa addop 'dsra32', 0b111111, :rd, :rt, :sa addop 'dsrav', 0b010111, :rd, :rt, :rs addop 'dsrl', 0b111010, :rd, :rt, :sa addop 'dsrl32', 0b111110, :rd, :rt, :sa addop 'dsrlv', 0b010110, :rd, :rt, :rs addop 'ddiv', 0b011110, :rs, :rt addop 'ddivu', 0b011111, :rs, :rt addop 'dmult', 0b011100, :rs, :rt addop 'dmultu', 0b011101, :rs, :rt addop 'dmfc0', (0b010000<<26) | (0b00001<<21), :rt, :idb addop 'dmfc0', (0b010000<<26) | (0b00001<<21), :rt, :idb, :sel addop 'dmtc0', (0b010000<<26) | (0b00101<<21), :rt, :idb addop 'dmtc0', (0b010000<<26) | (0b00101<<21), :rt, :idb, :sel end
init_mips64r2()
click to toggle source
# File metasm/cpu/mips/opcodes.rb, line 285 def init_mips64r2 init_mips64 @fields_mask.update :msbd => 0x1f @fields_shift.update :msbd => 11 addop 'dext', (0b011111 << 26) | 0b000011, :rt, :rs, :sa, :msbd # sa => lsb addop 'dextm', (0b011111 << 26) | 0b000001, :rt, :rs, :sa, :msbd addop 'dextu', (0b011111 << 26) | 0b000010, :rt, :rs, :sa, :msbd addop 'dins', (0b011111 << 26) | 0b000111, :rt, :rs, :sa, :msbd addop 'dinsm', (0b011111 << 26) | 0b000101, :rt, :rs, :sa, :msbd addop 'dinsu', (0b011111 << 26) | 0b000110, :rt, :rs, :sa, :msbd addop 'drotr', (1 << 21) | 0b111010, :rd, :rt, :sa addop 'drotr32', (1 << 21) | 0b111110, :rd, :rt, :sa addop 'drotrv', (1 << 6) | 0b010110, :rd, :rt, :rs addop 'dsbh', (0b011111 << 26) | (0b00010 << 6) | 0b100100, :rd, :rt addop 'dshd', (0b011111 << 26) | (0b00101 << 6) | 0b100100, :rd, :rt end
Also aliased as: init_latest