如何在GCC中添加一條RISC-V指令(轉)


最近Jim Wilson在郵件列表中給出了一個非常完整的介紹,講解如何在GCC的相關工具中添加一條RISC-V指令。

  • binutils: 如果只是想在匯編的級別添加一條指令,那么只需要修改binutils而不用動編譯器本身。 Kito Cheng提供了.insn模板。使用改模板可以全面定制每一條匯編指令。 不過,小修小改的話,直接修改binutils的代碼可能來的更加方便。 主要來說,需要將指令添加到opcodes/riscv-opc.c中, 將指令的格式添加到include/opcode/riscv-opc.h中, 格式中的各種縮寫符號可以在gas/config/tc-riscv.c的riscv_ip()函數中找到。
  • gcc自動生成: 如果需要讓GCC能自動生成添加的指令,這就會麻煩很多。 如果被添加的指令在一種明確的pattern出現時被使用, 那么,在gcc/config/riscv/riscv.md中添加該pattern的描述即可。 如果並不存在這種pattern,那么就需要修改和架構無關或相關的優化步驟,這樣就會比較困難。
  • 有限的資料:關於GCC可以看GCC的網站https://gcc.gnu.org/wiki/GettingStarted#Tutorials.2C_HOWTOs 關於Binutils,可以看https://sourceware.org/binutils/binutils-porting-guide.txt 不過Binutils的這個網站講解不夠詳細。 涉及到連接器優化的話,看這本書(“Linkers and Loaders” by John R Levine)會更好。

更詳細的講解,請參看Jim Wilson的郵件原文: sw-dev


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM