小编zek*_*eke的帖子

RISCV - 跳转指令与 PC 有何关系?

在 RISC-V 非特权规范 V20191213 中,说明了以下内容(第 21 页)

无条件跳转指令均使用 PC 相对寻址来帮助支持位置无关代码。

查看JALR指令的定义,

间接跳转指令JALR(跳转链接寄存器)采用I型编码。通过将符号扩展的 12 位 I 立即数与寄存器 rs1 相加,然后将结果的最低有效位设置为零来获得目标地址。

这个地址计算显然与PC无关那么,为什么规范声称所有跳转指令都使用 PC 相对寻址呢?

另外,PC 相对寻址如何支持位置无关代码?难道不应该是完全相反的吗?

assembly instruction-set cpu-architecture riscv position-independent-code

7
推荐指数
1
解决办法
1万
查看次数

为什么隐式类型转换在此代码中导致错误?

#include <iostream>

int main()
{
    int number=65536;
    long long temp=number*number;
    std::cout << temp << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

广场65536明显超出了int范围.现在,如果我宣布tempint,我会理解为什么这会失败.但即便如此long long,输出总是如此0.我相信这与隐式类型转换有些相关,但我不明白为什么结果如此0.

这是因为c ++根本不允许转换intlong?如果是这样,为什么这个数字较小?

c++ types

3
推荐指数
1
解决办法
117
查看次数

为什么 std::uniform_real_distribution 不会生成正确的浮动值?

我正在尝试打印随机浮点(32 位)值。我尝试uniform_real_distribution为此目的使用。我写了以下代码,

int main()
{
  std::random_device rd{};
  std::mt19937 gen{rd()};

  std::uniform_real_distribution<float> dist(-1e18,1e18);

  float random_val = dist(gen);

  printf("%.20f\n", random_val);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,输出很奇怪。我得到的只是非常大的数字(总是接近上限或下限),没有分数。以下是我看到的一些输出,

-149399166081040384.00000000000000000000
128349565723082752.00000000000000000000
-323890424458510336.00000000000000000000
802221481969844224.00000000000000000000
817395979383734272.00000000000000000000
Run Code Online (Sandbox Code Playgroud)

他们总是这样,我换个界限也无所谓。这里有什么问题?

c++ random distribution

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

在 Verilog 中为参数化数组赋值

假设我有以下模块定义,

module foo(b)
input b;
parameter length = 8;

reg [length-1:0] dummy ;
Run Code Online (Sandbox Code Playgroud)

现在,我想为这个虚拟数组赋值。例如,我想将其全部设为 1。如果长度没有参数化,我可以这样做,

always @(posedge b)
 dummy <= 8'hFF;
Run Code Online (Sandbox Code Playgroud)

但是当长度被参数化时,我希望这样做,

always @(posedge b)
 dummy <= length'hFFFF //won't even compile. even if it did, how many F's should there be?
Run Code Online (Sandbox Code Playgroud)

如何将一个(或零)分配给长度已参数化的整个数组?或者更一般地说,如何在指定参数化数组的长度时分配值?

syntax verilog register-transfer-level

0
推荐指数
1
解决办法
48
查看次数