小编Col*_*-Wu的帖子

MIPS 组装中 J 与 JAL(以及 JR 与 JALR)的必要性

我注册是因为我一直在谷歌上搜索这个问题的答案,但找不到。

我想知道 MIPS 中是否严格需要没有链接的跳转指令?

例如,我可以想象,在不需要时使用“AL”版本会导致一些功率损失,但是有没有任何情况(这不是完全人为设计的或者可以相对简单地编码)只有 J/JR 可以工作?

谢谢!

assembly mips cpu-architecture

2
推荐指数
1
解决办法
9323
查看次数

重载类方法与模板

我正在寻找一种优雅的方法(由最少的重复代码定义)以重载运算符以执行以下操作:

我有一个BaseSignal重载+=运算符的模板类,并且我希望能够接受许多不同的类型。例如,对于double,代码看起来像

  template <class T>
  class BaseSignal
  {
    public:
    ....
    // Self-increment
    BaseSignal<T>& operator+=(const double& rhs)
    {
      T rval;
      this->Get(&rval);
      this->Set(rval + static_cast<T>(rhs));
      return *this;
    }
    ....
Run Code Online (Sandbox Code Playgroud)

我一直在对int,long等重复这段代码。由于该值rhs仅在line中使用static_cast<T>(rhs),所以我在重复代码的同时仅更改输入参数的类型。

所以我可以模板化,例如

  template <class T, class U>
  class BaseSignal
  {
    public:
    ....
    // Self-increment
    BaseSignal<T>& operator+=(const U& rhs)
    {
      T rval;
      this->Get(&rval);
      this->Set(rval + static_cast<T>(rhs));
      return *this;
    }
    ....
Run Code Online (Sandbox Code Playgroud)

但是,这似乎使我失去了“重载”方面,因为编译器将自动为我选择正确的方法(它也仅适用U于实例化的原始类型)。

我意识到我正在尝试使用C ++实现某些非类型化的语言行为,这可能不是最聪明的事情,我只是想向一些常用的类中添加一些智能,以使后续代码变得更容易编写。

先感谢您。

c++

2
推荐指数
1
解决办法
45
查看次数

标签 统计

assembly ×1

c++ ×1

cpu-architecture ×1

mips ×1