public Object[] displayDataBytes(boolean hex) {
		int bits = (int)(Math.ceil(Helpers.log(size, (hex)? 16 : 10)));
		String[] headers = {"Address", "Byte"}; 
		
		int length = 0;
		for (Map.Entry<Integer, Byte> entry : memory.entrySet())
			if (entry.getValue() != 0)
				length++;
		
		String[][] data = new String[length][2];
		int i = 0;
		for (Map.Entry<Integer, Byte> entry : memory.entrySet()) {
			if (entry.getValue() == 0)
				continue;
			data[i][0] = String.format((hex)? "0x%0" + bits + "X" : "%d", entry.getKey());
			data[i][1] = String.format((hex)? "0x%02X" : "%d", entry.getValue());
			i++;
		}
		String accesses = String.format("%-20s : %d\n%-20s : %d", "Instruction accesses", instructionAccesses, "Data accesses", dataAccesses);
		return new Object[]{data, headers, accesses};
	}