| 571 | |
| 572 | #[cfg(test)] |
| 573 | fn check(pcode: pcode::Block, load_offset: usize, resize: Option<(u8, u8)>) { |
| 574 | use pcode::PcodeDisplay; |
| 575 | |
| 576 | let sleigh = sleigh_runtime::SleighData::default(); |
| 577 | for (i, entry) in pcode.instructions.iter().enumerate() { |
| 578 | eprintln!("[{i}] {}", entry.display(&sleigh)); |
| 579 | } |
| 580 | |
| 581 | let mut code = BlockTable::default(); |
| 582 | code.blocks.push(icicle_vm::cpu::lifter::Block { |
| 583 | pcode, |
| 584 | entry: None, |
| 585 | start: 0x0, |
| 586 | end: 0x0, |
| 587 | context: 0x0, |
| 588 | exit: lifter::BlockExit::invalid(), |
| 589 | breakpoints: 0x0, |
| 590 | num_instructions: 0x1, |
| 591 | }); |
| 592 | |
| 593 | let mut cpu = Cpu::new_boxed(icicle_vm::cpu::Arch::none()); |
| 594 | let mut resizer = LoadResizer::new(false); |
| 595 | let loads = resizer.get_loads(&mut cpu, &code, 0).unwrap(); |
| 596 | |
| 597 | if let Some((min_bit, max_bit)) = resize { |
| 598 | assert_eq!(&loads, &[(0, LoadMetadata { offset: load_offset, min_bit, max_bit })]); |
| 599 | } |
| 600 | else { |
| 601 | assert_eq!(&loads, &[]); |
| 602 | } |
| 603 | } |
| 604 | |
| 605 | #[cfg(test)] |
| 606 | fn check_multiblock(blocks: [pcode::Block; 3], load_offset: usize, resize: Option<(u8, u8)>) { |