├── ARM ├── ARM Architecture Reference Manual.pdf ├── ARM_calling.pdf ├── Arm_EE382N_4.pdf └── DUI0068.pdf ├── Lang └── ISOIEC 9899-Programming languages-C.pdf ├── MIPS ├── MIPS Assembly Language Guide.pdf ├── MIPS Calling Conventions Summary.pdf └── MIPS32 Instruction Set.pdf ├── README.md ├── RISC-V ├── RISC-V-Reader-Chinese-v2p1(2).pdf └── riscv-spec-v2.2.pdf ├── code generation ├── 1989-Twig-aho.pdf ├── 1989-beg.pdf ├── 1991-burg.pdf ├── 1992-iburg.pdf ├── 1996-Overview and industrial application of code generator generators.pdf ├── 2013-Survey on Instruction Selection.pdf └── 2014-Survey on Combinatorial Instruction schedule and register allocation.pdf ├── register-allocation ├── Linear Scan Register Allocation.pdf ├── cgo10-ChristianWimmer.pdf └── test.txt └── semantcis └── 2006-Formal Semantics of Programming Languages.pdf /ARM/ARM Architecture Reference Manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/ARM/ARM Architecture Reference Manual.pdf -------------------------------------------------------------------------------- /ARM/ARM_calling.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/ARM/ARM_calling.pdf -------------------------------------------------------------------------------- /ARM/Arm_EE382N_4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/ARM/Arm_EE382N_4.pdf -------------------------------------------------------------------------------- /ARM/DUI0068.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/ARM/DUI0068.pdf -------------------------------------------------------------------------------- /Lang/ISOIEC 9899-Programming languages-C.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/Lang/ISOIEC 9899-Programming languages-C.pdf -------------------------------------------------------------------------------- /MIPS/MIPS Assembly Language Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/MIPS/MIPS Assembly Language Guide.pdf -------------------------------------------------------------------------------- /MIPS/MIPS Calling Conventions Summary.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/MIPS/MIPS Calling Conventions Summary.pdf -------------------------------------------------------------------------------- /MIPS/MIPS32 Instruction Set.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/MIPS/MIPS32 Instruction Set.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

编译课程教学资源列表

2 | 3 |

国外教材列表

4 | 5 |
书名 作者 出版社 版本 链接 6 |
Compilers: Principles, Techniques, and Tools 7 | Alfred V. Aho,Monica S. Lam,Ravi Sethi,Jeffrey D. Ullman 8 | Addison Wesley 9 | 2nd edition 10 | https://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811 11 |
Advanced Compiler Design and Implementation 12 | Steven Muchnick 13 | Morgan Kaufman 14 | 1 edition 15 | https://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811 16 |
Modern Compiler Implementation in C: Basic Techniques 17 | Andrew W. Appel, Maia Ginsburg 18 | Cambridge University Press 19 | Cambridge University Press 20 | https://www.amazon.com/Modern-Compiler-Implementation-Basic-Techniques/dp/0521586534/ref=as_sl_pc_tf_til?tag=compilerbooks-20&linkCode=w00&linkId=&creativeASIN=0521586534 21 |
Modern Compiler Implementation in Java: Basic Techniques 22 | Andrew W. Appel 23 | Cambridge University Press 24 | 25 | https://www.amazon.com/Modern-Compiler-Implementation-Java-Techniques/dp/0521586542/ref=as_sl_pc_tf_til?tag=compilerbooks-20&linkCode=w00&linkId=&creativeASIN=0521586542 26 |
Programming Language Pragmatics 27 | Michael L. Scott 28 | Morgan Kaufmann 29 | Fourth Edition 30 | https://www.amazon.com/Programming-Language-Pragmatics-Michael-Scott/dp/0124104096 31 |
A Retargetable C Compiler: Design and Implementation 32 | avid R. Hanson / Christopher W. Fraser 33 | Addison-Wesley Professional 34 | 35 | https://www.amazon.com/Retargetable-Compiler-Design-Implementation/dp/0805316701 36 |
37 | 38 | 39 |

国外相关课程

40 | 41 | 43 | 49 | 55 | 61 | 67 | 74 | 81 | 88 |
学校 课程名称 授课教师 教材 链接 42 |
University of Rochester 44 | Programming Language Design and Implementation 45 | Michael L. Scott 46 | fourth edition of Programming Language Pragmatics 47 | https://www.cs.rochester.edu/courses/254/fall2017/resources.shtml 48 |
Stanford University 50 | Compilers 51 | Alex Aiken 52 | Compilers: Principles, Techniques, and Tools 53 | http://web.stanford.edu/class/cs143/ 54 |
MIT 56 | Computer Language Engineering 57 | Martin Rinard 58 | Modern Compiler Implementation in Java (Tiger Book) 59 | http://6.035.scripts.mit.edu/fa18/schedule.html 60 |
University of Edinburgh 62 | COMPILING TECHNIQUES 63 | Christophe Dubach 64 | 65 | https://www.inf.ed.ac.uk/teaching/courses/ct/18-19/ 66 |
Yale University 68 | Compilers and Interpreters 69 | Zhong Shao 70 | Modern Compiler Implementation in ML 71 | http://flint.cs.yale.edu/cs421/ 72 | 73 |
University of Pisa 75 | Advanced Programming 76 | prof. Andrea Corradini 77 | - 78 | https://github.com/md-cs-student-unipi/Advanced-Programming 79 | 80 |
NYU 82 | Compiler Construction 83 | Prof. Mohamed Zahran 84 | Compilers: Principles, Techniques, and Tools 85 | https://cs.nyu.edu/courses/spring11/G22.2130-001/ 86 | 87 |
McGill University 89 | Compiler Design 90 | Prof. Alexander Krolik 91 | Crafting a Compiler 92 | https://www.cs.mcgill.ca/~cs520/2018/ 93 | 94 |
95 | 96 |

MOOC课程

97 | 98 | 100 |
学校 课程名称 授课教师 平台 链接 99 |
国防科技大学 101 | 编译原理 102 | 王挺等 103 | 中国大学MOOC 104 | https://www.icourse163.org/course/NUDT-1003101005 105 |
106 | 107 |

教学型编译器列表

108 | 109 |
名称 实现语言 源语言 目标语言 链接 110 |
Modern Compiler Implementation in C C http://www.cs.princeton.edu/~appel/modern/c/project.html 111 |
Modern Compiler Implementation in Java Java http://www.cs.princeton.edu/~appel/modern/java/ 112 |
Modern Compiler Implementation in ML ML http://www.cs.princeton.edu/~appel/modern/ml/ 113 |
The lcc retargetable ANSI C compiler C C ALPHA, SPARC, MIPS R3000, and Intel x86 and its successors. https://github.com/drh/lcc , https://sites.google.com/site/lccretargetablecompiler/ 114 |
BIT-MiniCC Java C MIPS https://github.com/jiweixing/bit-minic-compiler 115 | 116 |
117 | 118 |

119 |

教学型模拟器列表/Processor Simulator for Teaching

120 | 121 |
名称 实现语言 指令集 是否支持性能模拟 链接 122 |
MARS Java MIPS http://courses.missouristate.edu/KenVollmar/MARS/ 123 |
SPIM C/C++ MIPS https://sourceforge.net/projects/spimsimulator/files/ 124 |
RARS Java RISC-V https://github.com/jiweixing/bit-rars 125 |
RARS Java RISC-V https://github.com/TheThirdOne/rars 126 |
AARS Java ARM https://github.com/jiweixing/aars 127 |
128 | 129 |

130 |

代码生成相关论文/Code Generation

131 | 132 |
年份 题目 链接 133 |
2018 Fast and Flexible Instruction Selection with Constraints http://www.acm.org/binaries/content/assets/src/2018/patrick-thier.pdf 134 |
2008:LLVM Near-Optimal Instruction Selection on DAGs https://llvm.org/pubs/2008-CGO-DagISel.pdf 135 |
1998:burg Burg --- Fast Optimal Instruction Selection and Tree Parsing http://www-inst.eecs.berkeley.edu/~graham/papers/burg-doc.ps 136 |
1995:lburg A Retargetable C Compiler: Design and Implementation. https://www.amazon.com/Retargetable-Compiler-Design-Implementation/dp/0805316701 137 |
1993:iburg Engineering a simple, efficient code generator generator https://people.well.com/user/cwf/pro/Fraser,%20Hanson,%20and%20Proebsting.%20Engineering%20a%20simple,%20efficient%20code-generator%20generator.pdf 138 |
139 | 140 |

141 |

MIPS处理器相关资料

142 | 147 | 148 |

RISC-V处理器相关资料

149 | 154 | 155 |

ARM处理器相关资料

156 | 161 | 162 |

163 |

以上列表正在逐步完善过程中,如有遗漏并希望添加的,请将相关信息发送到邮箱:jwx@bit.edu.cn 164 | 165 | -------------------------------------------------------------------------------- /RISC-V/RISC-V-Reader-Chinese-v2p1(2).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/RISC-V/RISC-V-Reader-Chinese-v2p1(2).pdf -------------------------------------------------------------------------------- /RISC-V/riscv-spec-v2.2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/RISC-V/riscv-spec-v2.2.pdf -------------------------------------------------------------------------------- /code generation/1989-Twig-aho.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/1989-Twig-aho.pdf -------------------------------------------------------------------------------- /code generation/1989-beg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/1989-beg.pdf -------------------------------------------------------------------------------- /code generation/1991-burg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/1991-burg.pdf -------------------------------------------------------------------------------- /code generation/1992-iburg.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/1992-iburg.pdf -------------------------------------------------------------------------------- /code generation/1996-Overview and industrial application of code generator generators.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/1996-Overview and industrial application of code generator generators.pdf -------------------------------------------------------------------------------- /code generation/2013-Survey on Instruction Selection.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/2013-Survey on Instruction Selection.pdf -------------------------------------------------------------------------------- /code generation/2014-Survey on Combinatorial Instruction schedule and register allocation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/code generation/2014-Survey on Combinatorial Instruction schedule and register allocation.pdf -------------------------------------------------------------------------------- /register-allocation/Linear Scan Register Allocation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/register-allocation/Linear Scan Register Allocation.pdf -------------------------------------------------------------------------------- /register-allocation/cgo10-ChristianWimmer.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/register-allocation/cgo10-ChristianWimmer.pdf -------------------------------------------------------------------------------- /register-allocation/test.txt: -------------------------------------------------------------------------------- 1 | afd 2 | -------------------------------------------------------------------------------- /semantcis/2006-Formal Semantics of Programming Languages.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jiweixing/build-a-compiler-within-30-days/e650a53c27548df047bbfaa56aac0eff6527e225/semantcis/2006-Formal Semantics of Programming Languages.pdf --------------------------------------------------------------------------------