VHDL -1 rem 4 returns 3、为什么?

VHDL -1 rem 4 returns 3, why?

取下面的VHDL代码:

to_signed(-1, 32) rem to_signed(4, 32)

据我从各种来源了解到 this SO question 这应该会产生结果 -1,但它 returns 3,就像 mod 一样。为什么?

谢谢!

哦不,不是...

作为 MCVE:

library ieee;
use ieee.numeric_std.all;

entity rem_tb is
end rem_tb;

architecture arch of rem_tb is
begin
    assert false report "Result : " & integer'image(to_integer(to_signed(-1, 32) 
                                    rem to_signed(4, 32))) severity NOTE;
end arch;

使用 ghdl 编译:

ghdl -a rem_tb.vhd
ghdl -e rem_tb
ghdl -r rem_tb

它回复

rem_tb.vhd:11:1:@0ms:(assertion note): Result : -1

所以...您使用的是哪个模拟器?该模拟器对 MCVE 有什么作用?