From c5dbc33f6bf229c2b79f737709cd219cb7cbbdf4 Mon Sep 17 00:00:00 2001 From: Byaidu <909756245@qq.com> Date: Wed, 27 Oct 2021 22:40:33 +0800 Subject: [PATCH] Fix memory update --- plugins/tenet/trace/file.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/plugins/tenet/trace/file.py b/plugins/tenet/trace/file.py index 5ee49c9..396c2cd 100644 --- a/plugins/tenet/trace/file.py +++ b/plugins/tenet/trace/file.py @@ -1206,23 +1206,18 @@ def get_mem_data(self, mem_id, set_id, data_mask): else: addrs, masks, offsets, data = self.read_addrs, self.read_masks, self.read_offsets, self.read_data - offset = offsets[mem_id] #sum([number_of_bits_set(mask) for mask in masks[:mem_id]]) - #offset = sum([number_of_bits_set(mask) for mask in masks[:mem_id]]) - length = number_of_bits_set(masks[mem_id]) - raw_data = data[offset:offset+length] + src_mask = masks[mem_id] + src_offset = offsets[mem_id] address = self.trace.mem_addrs[addrs[mem_id]] output = TraceMemory(address, 8) - byte, i = 0, 0 - - while data_mask: - if data_mask & 1: - output.data[i] = raw_data[byte] + for i in range(8): + if (data_mask >> i) & 1: + output.data[i] = data[src_offset] output.mask[i] = 0xFF - byte += 1 - i += 1 - data_mask >>= 1 + if (src_mask >> i) & 1: + src_offset += 1 #assert byte == length