Генерация объектного кода для новой инструкции RISCV, выдаваемой серверной частью LLVM

Из https://github.com/riscv/riscv-llvm,

Использование llvm-riscv довольно просто для создания полного исполняемого файла, однако вам потребуется riscv64-unknown-*-gcc для сборки и компоновки. Пример компиляции hello world:

$ clang -target riscv64 -mriscv=RV64IAMFD -S hello.c -o hello.S
$ riscv64-unknown-elf-gcc -o hello.riscv hello.S

Мой вопрос: если я изменю бэкэнд LLVM и заставлю его выдать новую инструкцию в файле hello.S, как riscv64-unknown-elf-gcc узнает, как преобразовать ее в объектный код? Нужно ли также внести изменения в riscv64-unknown-elf-gcc, чтобы он знал формат новой инструкции?


person kchanuec    schedule 18.12.2016    source источник
comment
да, вам нужно применить изменения в файле xxxInstrInfo.td.   -  person Ehsan    schedule 16.10.2017


Ответы (1)


riscv64-unknown-elf-gcc вызывает as, то есть обычно GNU as из binutils для сборки ассемблерного кода (то есть hello.S в вашем фрагменте) в исполняемый машинный код. Таким образом, вам придется модифицировать binutils, если вы хотите собрать новую инструкцию.

person maxschlepzig    schedule 15.02.2020