陳俊良臺灣大學:資訊工程學研究所陳建智Chen, Chien-ChinChien-ChinChen2007-11-262018-07-052007-11-262018-07-052005http://ntur.lib.ntu.edu.tw//handle/246246/53813由於嵌入式系統的迅速的發展,目前已經有愈來愈多的高階產品,使用可程式化的 application specific instruction processor (ASIP)來開發,除了效能更高,也能更有彈性地執行應用程式。隨著ASIP的應用,其對應的系統軟體,包括編譯器 、組譯器、連結器和模擬器,更亦顯的重要。 為了提升ASIP設計的效率,並且減少開發上的成本,新的設計方法使用架構描述語言(ADL)來定義處理器的架構,而對應的系統軟體則由電腦輔助設計系統自動產生。然而這部分的研究領域目前大多偏向編譯器方面的研究,至於下游軟體包括組譯器和連結器等,卻鮮少有人觸及。 本篇論文提供一個有效的方法能將這些下游軟體藉由架構描述語言自動移植到新處理器上。我們針對開放源碼的 GNU Binary Utilities (binutils) 來進行移植。基於實務考量,我們採用CGEN作為協助移植的工具,它提供一個實用的架構描述語言來描述指令集,另外我們開發一個工具(ALGEN)來處理剩下的工作,主要是在處理程式重定位的問題。藉由CGEN和ALGEN,我們能以自動化的方式移植GNU binutils到新的處理器上。 為了證實我們方法的可行性,我們分別對FR30和OPENRISC進行移植。結果顯示,我們的方法確實能快速且成功的將GNU binutils移植到目標架構上。With the rapid development of the embedded system, many new application-specific instruction-set processors (ASIP) are developed in the last few years, which are getting more and more attractive due to their balance between computational efficiency and flexibility. In order to reduce both the design time and the development cost, architecture description languages (ADL) have been established to aid the design of ASIP, which is an active research field to automatic generation of a software toolkit, including C compiler, assembler, linker, and simulator etc. However, most researches in this field focus on automatic generation of compiler, few efforts shed light on the automatic generation of other tools. In this thesis, we propose a framework that can automatically port GNU binutils package, which contain a suite of downstream software development tools such as assembler, disassebmbler and linker etc. We construct our framework base on CGEN, a developing generator of CPU-related tools. With CGEN's help, we can easily model instruction set architecture of a processor. Besides, we developed a tool, ALGEN, to complete the remaining work, which mainly focus on relocation handling. With ALGEN and CGEN, we can automatically port GNU binuitls to a new architecture. To verify the feasibility of our framework, we tried to port GNU binutils to FR30 and OPENRISC. The implementation results show that our framework is practical and useful.致謝 i 摘要 iii Abstract v List of Figures ix List of Tables xi Chapter 1 Introduction 1 1.1. Research Motivation 1 1.2. Related Work 2 1.3. Thesis Organization 4 Chapter 2 Executable and Linkable Format 5 2.1. Object File Concept 5 2.2. Object File Format 7 2.2.1. ELF header 8 2.2.2. Sections 9 2.2.3. Relocation 10 Chapter 3 GNU Binary Utilities 13 3.1. Binary File Descriptor Library 13 3.1.1 The BFD view of an object file 14 3.1.2. BFD relocation handling 15 3.1.2.1. BFD relocation concepts 16 3.1.2.2. BFD relocation function 17 3.1.2.3. BFD relocation codes 18 3.1.3. BFD ELF support 18 3.2. Opcodes Library 20 3.3. GNU Assembler 20 3.3.1. Internal of GAS 21 3.3.2. Porting GAS 27 3.4. GNU Linker 31 Chapter 4 Cpu tools Generator 35 4.1. Introduction to CGEN 35 4.2. CPU description language 36 4.3. Support of CGEN 39 4.3.1. Opcode support 39 4.3.2. GAS porting support 40 Chapter 5 Our Strategy 43 5.1. Cross-Compilation 43 5.2. System Design 44 5.3. Overall Process of Retarget 48 Chapter 6 Implementation 51 6.1. ALGEN Description Language 51 6.1.1. Extraction from CGEN 52 6.1.2. Relocation Modeling 56 6.1.3. Miscellaneous 59 6.2. Generation of Binutils Backend files 61 6.2.1. tc-cpu.[ch] 61 6.2.2. elf32-cpu.c, cpu-cpu.h, cpu.h 63 6.2.3. elf32cpu.sh 67 6.3. Modify maker of binutils 68 6.4. Verification 69 Chapter 7 Conclusion 71 Bibliography 72 Appendix A User’s Manual 73443967 bytesapplication/pdfen-US嵌入式系統移值架構描述語言binutilsembeddedportingArchitecture description languagesBinary Utilities 自動移植生成器Binary Utilities Generator for Application Specific Instruction Processorthesishttp://ntur.lib.ntu.edu.tw/bitstream/246246/53813/1/ntu-94-R92922051-1.pdf