【发布时间】:2019-08-19 13:45:34
【问题描述】:
假设您使用 RV32 程序并尝试在 64 位系统上运行它,可能会出现哪些兼容性问题?
据我了解,指令编码是相同的,并且在 RISC-V 上(与其他现代 RISC 架构一样,尽管与 x86 不同),ALU 操作会自动对字长进行操作,所以如果您添加一对寄存器,您将获得 32 位或 64 位加法(如果适用)。加载和存储当然是在明确指定的大小上工作的,因为它们取决于在内存中分配了多少字节。
如果代码依赖于超过 32 位被丢弃,理论上可能会出现一个兼容性问题,例如将 2^31 添加到自身并将结果与零进行比较。
如果操作系统提供前 4 GB 之外的内存地址,则会出现另一个更实际的问题,当代码将地址存储在 32 位变量中时,就会出现乱码。
还有其他我遗漏的问题吗?
【问题讨论】:
标签: 32bit-64bit riscv