Предположим, вы берете программу RV32 и пытаетесь запустить ее в 64-битной системе. Какие проблемы совместимости могут возникнуть?
Насколько я понимаю, кодировка инструкций такая же, и на RISC-V (как и в других современных архитектурах RISC, хотя и в отличие от x86) операции ALU автоматически работают с любым размером слова, поэтому, если вы добавите содержимое пары регистров, вы получите 32-битное или 64-битное дополнение, в зависимости от ситуации. Загрузка и сохранение, конечно, работают с явно указанным размером, потому что они зависят от того, сколько байтов было выделено в памяти.
Одна теоретически возможная проблема совместимости может возникнуть, если код зависит от отбрасываемых битов старше 32, например прибавьте 2 ^ 31 к себе и сравните результат с нулем.
Другая, более практическая проблема может возникнуть, если операционная система предоставляет адреса памяти за пределами первых 4 гигабайт, которые будут искажены, когда код хранит адреса в 32-битных переменных.
Есть ли еще какие-то проблемы, которые мне не хватает?