Beispiel #1
0
        public static bool RSa(ulong uInstr, zSeriesDisassembler dasm)
        {
            var r1 = Registers.GpRegisters[(uInstr >> 20) & 0xF];
            var b2 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
            var d2 = (int)Bits.SignExtend(uInstr, 12);

            dasm.state.ops.Add(new RegisterOperand(r1));
            dasm.state.ops.Add(dasm.CreateAccess(b2, d2));
            return(true);
        }
Beispiel #2
0
 public static bool FXa(ulong uInstr, zSeriesDisassembler dasm)
 {
     var f1 = new RegisterOperand(Registers.FpRegisters[(uInstr >> 20) & 0xF]);
     var x2 = Registers.GpRegisters[(uInstr >> 16) & 0xF];
     var b2 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
     var d2 = (int)Bits.SignExtend(uInstr, 12);
     dasm.ops.Add(f1);
     dasm.ops.Add(dasm.CreateAccess(b2, x2, d2));
     return true;
 }
Beispiel #3
0
 private static bool RXYa(ulong uInstr, zSeriesDisassembler dasm)
 {
     var r1 = new RegisterOperand(Registers.GpRegisters[(uInstr >> 36) & 0xF]);
     var x2 = Registers.GpRegisters[(uInstr >> 32) & 0xF];
     var b2 = Registers.GpRegisters[(uInstr >> 28) & 0xF];
     var d2 = Bitfield.ReadSignedFields(rxya_offset, (uint)uInstr);
     dasm.ops.Add(r1);
     dasm.ops.Add(dasm.CreateAccess(b2, x2, d2));
     return true;
 }
Beispiel #4
0
        private static bool SI(ulong uInstr, zSeriesDisassembler dasm)
        {
            var i2 = ImmediateOperand.Byte((byte)(uInstr >> 16));
            var b1 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
            var d1 = (int)Bits.SignExtend(uInstr, 12);

            dasm.ops.Add(dasm.CreateAccess(b1, d1));
            dasm.ops.Add(i2);
            return(true);
        }
Beispiel #5
0
 private static bool RSYb(ulong uInstr, zSeriesDisassembler dasm)
 {
     var r1 = Registers.GpRegisters[(uInstr >> 36) & 0xF];
     var m3 = (byte)((uInstr >> 32) & 0xF);
     var b2 = Registers.GpRegisters[(uInstr >> 28) & 0xF];
     var d2 = Bitfield.ReadSignedFields(rsya_offset, (uint)uInstr);
     dasm.ops.Add(new RegisterOperand(r1));
     dasm.ops.Add(ImmediateOperand.Byte(m3));
     dasm.ops.Add(dasm.CreateAccess(b2, d2));
     return true;
 }
Beispiel #6
0
 public static bool RSb(ulong uInstr, zSeriesDisassembler dasm)
 {
     var r1 = Registers.GpRegisters[(uInstr >> 20) & 0xF];
     var m3 = ImmediateOperand.Byte((byte)((uInstr >> 16) & 0xF));
     var b2 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
     var d2 = (int)Bits.SignExtend(uInstr, 12);
     dasm.ops.Add(new RegisterOperand(r1));
     dasm.ops.Add(dasm.CreateAccess(b2, d2));
     dasm.ops.Add(m3);
     return true;
 }
Beispiel #7
0
 public static bool SSf(ulong uInstr, zSeriesDisassembler dasm)
 {
     var l2 = (byte)(uInstr >> 32);
     var b1 = Registers.GpRegisters[(uInstr >> 28) & 0xF];
     var d1 = (int)Bits.SignExtend(uInstr >> 16, 12);
     var b2 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
     var d2 = (int)Bits.SignExtend(uInstr, 12);
     dasm.ops.Add(dasm.CreateAccess(b1, d1));
     dasm.ops.Add(dasm.CreateAccessLength(b2, d2, l2 + 1));
     return true;
 }
Beispiel #8
0
        private static bool RSYa(ulong uInstr, zSeriesDisassembler dasm)
        {
            var r1 = Registers.GpRegisters[(uInstr >> 36) & 0xF];
            var r3 = Registers.GpRegisters[(uInstr >> 32) & 0xF];
            var b2 = Registers.GpRegisters[(uInstr >> 28) & 0xF];
            var d2 = Bitfield.ReadSignedFields(rsya_offset, (uint)uInstr);

            dasm.state.ops.Add(new RegisterOperand(r1));
            dasm.state.ops.Add(new RegisterOperand(r3));
            dasm.state.ops.Add(dasm.CreateAccess(b2, d2));
            return(true);
        }
Beispiel #9
0
 public static bool SSc(ulong uInstr, zSeriesDisassembler dasm)
 {
     var l = (byte)((uInstr >> 36) & 0xF);
     var i3 = (byte)((uInstr >> 32) & 0xF);
     var b1 = Registers.GpRegisters[(uInstr >> 28) & 0xF];
     var d1 = (int)Bits.SignExtend(uInstr >> 16, 12);
     var b2 = Registers.GpRegisters[(uInstr >> 12) & 0xF];
     var d2 = (int)Bits.SignExtend(uInstr, 12);
     dasm.ops.Add(dasm.CreateAccessLength(b1, d1, l + 1));
     dasm.ops.Add(dasm.CreateAccess(b2, d2));
     dasm.ops.Add(ImmediateOperand.Byte(i3));
     return true;
 }