MCPcopy Index your code
hub / github.com/encounter/objdiff / write_addr_ldr_str

Method write_addr_ldr_str

objdiff-core/src/arch/arm.rs:616–632  ·  view source on GitHub ↗
(&mut self, addr_ldr_str: unarm::AddrLdrStr)

Source from the content-addressed store, hash-verified

614 fn write_fpscr(&mut self, fpscr: unarm::Fpscr) -> core::fmt::Result { self.write_opaque(fpscr) }
615
616 fn write_addr_ldr_str(&mut self, addr_ldr_str: unarm::AddrLdrStr) -> core::fmt::Result {
617 addr_ldr_str.write(self)?;
618 if let unarm::AddrLdrStr::Pre {
619 rn: unarm::Reg::Pc,
620 offset: unarm::LdrStrOffset::Imm(offset),
621 ..
622 } = addr_ldr_str
623 {
624 let thumb = self.resolved.ins_ref.opcode & (1 << 15) == 0;
625 let pc_offset = if thumb { 4 } else { 8 };
626 let pc = (self.resolved.ins_ref.address as u32 & !3) + pc_offset;
627 self.write(InstructionPart::basic(" (->"))?;
628 self.write(InstructionPart::branch_dest(pc.wrapping_add(offset as u32)))?;
629 self.write(InstructionPart::basic(")"))?;
630 }
631 Ok(())
632 }
633}

Callers

nothing calls this directly

Calls 2

branch_destFunction · 0.85
writeMethod · 0.45

Tested by

no test coverage detected