尝试通过以下方式打印 2^32 地址的大量内存地址(32 位):
0x12345678 W
0x23456789 R
.
.
.
.
0xFFFFFFFFW
基本上是从一个地址到另一个地址。所以它可能从 0x0000000 到 0x00000003,我们将有 0x0000000 R、0x0000001 R、0x0000002 R、0x0000003 W。
主要目标是将它们提供给模拟器,但我在打印这些(使用 print())并将它们存储在 Python 文件中时遇到存储和内存问题。我无法压缩它们,因为模拟器以上述方式获取它们。在 Python 中打印和存储它们的好、有效的方法是什么?
为了在 Python 中高效生成和存储 2^32 内存地址,请考虑将它们直接循环写入文件,而不将它们存储在内存中。使用字符串格式进行十六进制转换并将每一行立即写入文件。这种方法最大限度地减少了内存使用。
基本脚本:
def generate_addresses(file_path):
with open(file_path, 'w') as file:
for i in range(2**32):
address = f"0x{i:08X}"
access_type = "W" if i % 2 == 0 else "R"
file.write(f"{address} {access_type}\n")
if __name__ == "__main__":
generate_addresses("memory_addresses.txt")
此脚本针对每个地址在“W”和“R”之间交替,并直接写入文件,这对于此类大规模数据处理非常有效。