最高效内存写入的算法

Algorithm for most efficient memory write

提问人:bluehelp8 提问时间:8/4/2023 最后编辑:bluehelp8 更新时间:8/4/2023 访问量:51

问:

我有以下问题,需要帮助想出一个算法


你有值,你必须在内存中的特定地址写入,还有一个从 0 开始的计数器。目标是找到在内存中写入值的最有效方法,其中效率是通过尽可能少地增加计数器来确定的。

我们假设:

  • 计算机使用很少的字节序
  • 每次写入时,我们一次写入 4 个字节
  • 我们只能将计数器的内容写入内存,因此,如果计数器当前0x7a您将写入0x7a000000(请记住,我们使用很少的字节序)
  • 我们只能增加计数器(一次一个),而不能递减它
  • 我们可以从您给定的目标地址写入邻居地址

例如,使用以下参数:

  • address = 0x1000
  • value = 0x01025544

最有效的编写方法是:

  1. 将计数器从 0x0 递增到 0x44(0x44 = 68,以 10 为基数)
  2. 将计数器写入内存 @(地址)。内存现在如下所示:0x44000000
  3. 将计数器从 0x44 递增到 0x55(0x55 = 85,以 10 为基数)
  4. 将计数器写入内存 @(地址 + 1)。内存现在如下所示:0x44550000
  5. 将计数器从 0x44 递增到 0x0102(以 10 为基数的 0x0102 = 258)
  6. 将计数器写入内存 (address + 2)。内存现在如下所示:0x44550201

0x44550201 -> 0x01025544 == value,算法完成。

当然,这个伪代码是针对这种情况的,我想要一些通用的东西,适用于任何值,而不仅仅是这个。

算法 与语言无关

评论


答: 暂无答案