Я клонировал riscv-tools (https://github.com/riscv/riscv-tools) и riscv-gnu-toolchain (https://github.com/riscv/riscv-gnu-toolchain)) и смог получить Spike, pk и кросс-компилятор (riscv64-unknown-elf-gcc)чтобы работать. Я хочу расширить это и иметь возможность добавлять пользовательские инструкции и нашел этот учебник: https://nitish2112.github.io/post/adding-instruction-riscv/, но он немного устарел. Текущее хранилище RISCV GNU Toolchain не имеет директории riscv-binutils-gdb, но делаету меня есть каталог riscv-binutils и каталог riscv-gdb, поэтому я попытался использовать файлы в этих каталогах вместо добавления инструкции.
После того, как я добавил код операции в riscv-tools / riscv-opcodes / opcodes и вфайлы в riscv-gnu-toolchian / riscv- {binutils, gcb} и собрал его, выполнив следующее:
sudo ./configure --prefix=/home/me/riscv64
sudo make newlib -j $(nproc)
sudo make linux -j $(nproc)
export PATH="$PATH:/home/me/riscv64/bin"
export RISCV="/home/me/riscv64"
Затем я протестировал его, запустив
riscv64-unknown-elf-gcc -o mod mod.c
с тем жеФайл mod.c в учебнике, за исключением того, что я добавил точку с запятой после вставки asm, чтобы заставить его передать компилятор. Затем я получаю следующую ошибку от ассемблера:
mod.c:7: Error: unrecognized opcode `mod a5,a5,a4'
Есть ли что-то, что я делаюнеправильно? Спасибо за вашу помощь и время.