mirror of
				https://github.com/Ryujinx/Ryujinx.git
				synced 2025-10-24 18:20:31 -07:00 
			
		
		
		
	* Get rid of Reflection.Emit dependency on CPU and Shader projects * Remove useless private sets * Missed those due to the alignment
		
			
				
	
	
		
			29 lines
		
	
	
		
			813 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			813 B
		
	
	
	
		
			C#
		
	
	
	
	
	
| namespace ARMeilleure.Decoders
 | |
| {
 | |
|     class OpCode32BImm : OpCode32, IOpCode32BImm
 | |
|     {
 | |
|         public long Immediate { get; }
 | |
| 
 | |
|         public new static OpCode Create(InstDescriptor inst, ulong address, int opCode) => new OpCode32BImm(inst, address, opCode);
 | |
| 
 | |
|         public OpCode32BImm(InstDescriptor inst, ulong address, int opCode) : base(inst, address, opCode)
 | |
|         {
 | |
|             uint pc = GetPc();
 | |
| 
 | |
|             // When the condition is never, the instruction is BLX to Thumb mode.
 | |
|             if (Cond != Condition.Nv)
 | |
|             {
 | |
|                 pc &= ~3u;
 | |
|             }
 | |
| 
 | |
|             Immediate = pc + DecoderHelper.DecodeImm24_2(opCode);
 | |
| 
 | |
|             if (Cond == Condition.Nv)
 | |
|             {
 | |
|                 long H = (opCode >> 23) & 2;
 | |
| 
 | |
|                 Immediate |= H;
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |