internal override TargetBlob ReadMemory(TargetMemoryAccess target, int size)
{
byte[] data = relative_to.ReadBuffer(target, size);
int total_size = 8 * data.Length;
bool[] bit_data = new bool [total_size];
bool[] target_bits = new bool [total_size];
// FIXME
bool is_bigendian = false;
int bit_pos = 0;
for (int i = 0; i < data.Length; i++)
{
byte current = data [i];
for (int j = 0; j < 8; j++)
{
bit_data [bit_pos++] = (current & (1 << j)) != 0;
}
}
bit_pos = 0;
if (!is_bigendian)
{
bit_offset = total_size - bit_offset - bit_size;
}
for (int i = bit_offset; i < bit_offset + bit_size; i++)
{
target_bits [bit_pos++] = bit_data [i];
}
byte[] blob = new byte [data.Length];
bit_pos = 0;
for (int i = 0; i < blob.Length; i++)
{
int current = 0;
for (int j = 0; j < 8; j++)
{
if (target_bits [bit_pos++])
{
current |= 1 << j;
}
}
blob [i] = (byte)current;
}
return(new TargetBlob(blob, target.TargetMemoryInfo));
}