/* * MakeRelativeOffset * Writes relative offset into @at based on absolute destination @dest */ inline void MakeRelativeOffset(memory_pointer_tr at, memory_pointer_tr dest, size_t sizeof_addr = 4, bool vp = true) { switch(sizeof_addr) { case 1: WriteMemory<int8_t> (at, static_cast<int8_t> (GetRelativeOffset(dest, at+sizeof_addr)), vp); case 2: WriteMemory<int16_t>(at, static_cast<int16_t>(GetRelativeOffset(dest, at+sizeof_addr)), vp); case 4: WriteMemory<int32_t>(at, static_cast<int32_t>(GetRelativeOffset(dest, at+sizeof_addr)), vp); } }
std::string Thumb::LoadStoreStackInstruction::ToString() const { std::stringstream stream; stream << Thumb::ToString(GetOpcode()) << " R" << GetDestinationRegister(); stream << ", [SP, #0x" << std::hex << std::uppercase << GetRelativeOffset() << "]"; return stream.str(); }