打印出要由 Python 中的内存模拟应用程序读取的轨迹

问题描述 投票:0回答:1

尝试通过以下方式打印 2^32 地址的大量内存地址(32 位):

0x12345678 W

0x23456789 R

.

.

.

.

0xFFFFFFFFW

基本上是从一个地址到另一个地址。所以它可能从 0x0000000 到 0x00000003,我们将有 0x0000000 R、0x0000001 R、0x0000002 R、0x0000003 W。

主要目标是将它们提供给模拟器,但我在打印这些(使用 print())并将它们存储在 Python 文件中时遇到存储和内存问题。我无法压缩它们,因为模拟器以上述方式获取它们。在 Python 中打印和存储它们的好、有效的方法是什么?

python python-3.x memory hex storage
1个回答
2
投票

为了在 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”之间交替,并直接写入文件,这对于此类大规模数据处理非常有效。

© www.soinside.com 2019 - 2024. All rights reserved.