|
|
|
@ -319,15 +319,15 @@ public: |
|
|
|
int length = insn_length(insn); |
|
|
|
|
|
|
|
if (likely(length == 4)) { |
|
|
|
insn |= (insn_bits_t)from_le(*(const int16_t*)translate_insn_addr_to_host(addr + 2)) << 16; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 2)) << 16; |
|
|
|
} else if (length == 2) { |
|
|
|
insn = (int16_t)insn; |
|
|
|
// entire instruction already fetched
|
|
|
|
} else if (length == 6) { |
|
|
|
insn |= (insn_bits_t)from_le(*(const int16_t*)translate_insn_addr_to_host(addr + 4)) << 32; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 4)) << 32; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 2)) << 16; |
|
|
|
} else { |
|
|
|
static_assert(sizeof(insn_bits_t) == 8, "insn_bits_t must be uint64_t"); |
|
|
|
insn |= (insn_bits_t)from_le(*(const int16_t*)translate_insn_addr_to_host(addr + 6)) << 48; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 6)) << 48; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 4)) << 32; |
|
|
|
insn |= (insn_bits_t)from_le(*(const uint16_t*)translate_insn_addr_to_host(addr + 2)) << 16; |
|
|
|
} |
|
|
|
|