【问题标题】:Is there any ways in C,C++ to control the memory ram,registers according to our need? [closed]C,C ++中有什么方法可以根据我们的需要控制内存ram,寄存器吗? [关闭]
【发布时间】:2013-08-04 20:47:32
【问题描述】:

C 和 C++ 中是否有任何方法可以根据我们的需要控制内存 ram 和寄存器?例如。将 ram 中的数据从一个位置移动到另一个位置,更改寄存器中的值等?

在 Java 中可以吗???

【问题讨论】:

  • 你的“需要”是什么?您是否正在为最小的设备编程?
  • C 确实有一个“注册”关键字。在 1980 年代中期,通过谨慎使用它,我可以在许多功能上获得显着的性能提升。最近,编译器非常擅长有效地使用寄存器,以至于我无法获得任何好处。
  • 如果您在台式机或服务器上编程,操作系统和编译器可以比您做得好一百万倍。即使在智能手机/平板电脑操作系统上,您也不太可能需要这样做。如果您正在编写一个没有操作系统的嵌入式系统,那么您可以并且需要做所有这些事情。
  • @PatriciaShanahan - 要记住的另一件事是,与 Vax 或 SPARC 或其他流行架构相比,英特尔架构的寄存器数量非常少。在 Intel 上,几乎没有足够的寄存器供编译器自己处理。
  • 是的,帮助你的工具叫做编译器。

标签: java c++ c


【解决方案1】:

对于内存管理,您应该考虑使用Memory PoolLink.

尽管您不应该重新发明轮子。改用为内存池提供干净的模板化接口的库。尽量避免 malloc 和 memcpy。

如果您不想使用寄存器,您可以包含assembly 代码。 Link.

【讨论】:

    【解决方案2】:

    我不确定是否理解您的问题,具体是操作系统、处理器和编译器。

    使用最近的GCC,您可以做一些事情(例如,保留寄存器以避免它们被使用)。您还可以自定义编译器(例如使用MELT)以满足更多需求。但这样的定制意味着至少需要数周的努力。

    你也可以在 GCC 中创建一个新的后端(但这意味着几个月的工作)

    最近的标准 C++11 库有很多 std::allocator 和很多 memory 管理相关的东西。

    【讨论】:

      猜你喜欢
      • 2011-04-17
      • 1970-01-01
      • 2010-12-26
      • 2021-11-25
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 2018-01-16
      相关资源
      最近更新 更多