| 429 | } |
| 430 | |
| 431 | pub fn source_reg(&self) -> LowLevelILRegister<A::Register> { |
| 432 | let raw_id = self.op.operands[0] as u32; |
| 433 | |
| 434 | if raw_id >= 0x8000_0000 { |
| 435 | LowLevelILRegister::Temp(raw_id & 0x7fff_ffff) |
| 436 | } else { |
| 437 | self.function |
| 438 | .arch() |
| 439 | .register_from_id(RegisterId(raw_id)) |
| 440 | .map(LowLevelILRegister::ArchReg) |
| 441 | .unwrap_or_else(|| { |
| 442 | log::error!( |
| 443 | "got garbage register from LLIL_REG @ 0x{:x}", |
| 444 | self.op.address |
| 445 | ); |
| 446 | |
| 447 | LowLevelILRegister::Temp(0) |
| 448 | }) |
| 449 | } |
| 450 | } |
| 451 | } |
| 452 | |
| 453 | impl<A, M, F> Debug for Operation<'_, A, M, F, Reg> |