如何生成十六进制值以转储到将与模拟缓存一起使用的 Java 模拟主内存?

How to generate hex values to dump into a Java simulated main memory, which will be working with a simulated cache?

我正在创建一个缓存模拟来向自己展示它是如何工作的,并向自己证明我至少(希望)在一定程度上精通 java 和计算。因此,如果我在某件事上明显错了,那么听取外界的意见肯定会有所帮助 :)

我计划的地址大小将是 12 位(标记 4 位,行 5 位,字 3 位)。我想随机生成 32 行十六进制字符串以加载到我的模拟寄存器中以表示主内存。然后,我随机将select MM中的其中一行记录为"used," hits/misses,如果该行在缓存中不存在,则将其复制进来。比较简单但我打算越深入越好。

我想我可以拥有一个包含我自己编写的行的文本文件,但如果有一种方法可以随机生成存储在内存中的数据,那就太好了。

I'd like to randomly generate 32 lines of hex strings

Random rnd = new Random();
int bits = 12;      // bits in "byte"
int length = 10;    // number of "bytes" in string
int n = 32;         // number of strings

for (int i = 0; i < n; i++) {
   StringBuilder sb = new StringBuilder();
   for (int j = 0; j < length; j++) {
      sb.append(Integer.toHexString(rnd.nextInt(1 << bits))).append(' ');
   }
   System.out.println(sb.toString());  // or write to file
}

输出:

d3b 2cc cf2 6ca c0c 8bb 47 e17 3ed 63e 
d48 396 5c9 69b 5bc 7f1 57e 356 8d5 9c3 
560 d45 10f c4d 2a5 a03 e08 13c bf 9b7 
...