PageRenderTime 48ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/source/readings.html.md

https://gitlab.com/garrett/gcc-website
Markdown | 319 lines | 286 code | 33 blank | 0 comment | 0 complexity | d45332adfa39afde5685ca094df01b0b MD5 | raw file
  1. # Links and Selected Readings
  2. ## GCC-specific Literature
  3. - [An Introduction to GCC](http://www.network-theory.co.uk/gcc/intro/) by Brian J. Gough.
  4. - [GNU C Compiler Internals (Wikibook)](http://en.wikibooks.org/wiki/GNU_C_Compiler_Internals), numerous contributors.
  5. - [Compilation of Functional Programming Languages using GCC -- Tail Calls](http://users.cecs.anu.edu.au/~baueran/thesis/) by Andreas Bauer.
  6. - [Porting GCC for Dunces](http://ftp.axis.se/pub/users/hp/pgccfd/) by Hans-Peter Nilsson \<<hans-peter.nilsson@axis.com>\>.
  7. - [Using, Maintaining and Enhancing COBOL for the GNU Compiler Collection (GCC)](http://cobolforgcc.sourceforge.net/cobol_toc.html) by Joachim Nadler and Tim Josling \<<tej@melbpc.org.au>\>.
  8. - [The V3 multi-vendor standard C++ ABI](http://mentorembedded.github.com/cxx-abi/) is used in GCC releases 3.0 and above.
  9. - [Compiling and testing complete gcc/glibc cross-toolchains for Linux targets](http://kegel.com/crosstool/) by Dan Kegel.
  10. ## Chip Documentation
  11. The list below is based on the subdirectory names of the gcc/config directory, which typically matches with the CPU name in the configuration name. In some cases, different (but similar) CPUs are put into one directory; the names in parentheses list such similar CPU names.
  12. - alpha
  13. Manufacturer: Compaq (DEC)
  14. [Calling Standard for AXP Systems](http://www.tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/TITLE.HTM) documents the calling conventions for Digital Unix; chapters 2-4 apply to other Alpha Unix systems as well.
  15. [Alpha Hardware Reference Manuals](http://h18000.www1.hp.com/cpq-alphaserver/technology/chip-docs.html)
  16. - andes (nds32)
  17. Manufacturer: Various licenses of Andes Technology Corporation.
  18. CPUs include: AndesCore families N7, N8, SN8, N9, N10, N12 and N13.
  19. [Andes Documentation](http://www.andestech.com/en/products/documentation.htm)
  20. GDB includes a simulator for all CPUs.
  21. - arc
  22. Manufacturer: ARC Cores (Argonaut)
  23. - arm (armv2, thumb)
  24. Manufacturer: Various, by license from ARM
  25. CPUs include: ARM7 and ARM7T series (eg. ARM7TDMI), ARM9 and StrongARM
  26. [ARM Documentation](http://infocenter.arm.com/help/index.jsp)
  27. - AVR
  28. Manufacturer: Atmel
  29. [AVR Documentation](http://www.atmel.com/products/microcontrollers/avr/)
  30. - Blackfin
  31. Manufacturer: Analog Devices
  32. [uClinux and GNU toolchains for the Blackfin](http://blackfin.uclinux.org/gf/)
  33. [Blackfin Documentation](http://www.analog.com/en/processors-dsp/blackfin/products/index.html)
  34. - c4x
  35. Manufacturer: Texas Instruments
  36. Exact chip name: TMS320C4X
  37. - C6X
  38. Manufacturer: Texas Instruments
  39. Exact chip name: TMS320C6X
  40. [Site for the Linux on C6X project](http://linux-c6x.org/)
  41. - CR16
  42. Manufacturer: National Semiconductor
  43. Acronym stands for: CompactRISC 16-bit
  44. GDB includes a simulator
  45. - CRIS
  46. Manufacturer: Axis Communications
  47. Acronym stands for: Code Reduced Instruction Set
  48. The CRIS architecture is used in the ETRAX system-on-a-chip series.
  49. [Site with CPU documentation](http://developer.axis.com/)
  50. - Epiphany
  51. Manufacturer: Adapteva
  52. [Manufacturer's website](http://www.adapteva.com/) with additional information about the Epiphany architecture.
  53. - fr30
  54. Manufacturer: Fujitsu
  55. Acronym stands for: Fujitsu RISC
  56. GDB includes a [CGEN](http://sourceware.org/cgen/) generated simulator.
  57. - h8300
  58. Manufacturer: Renesas
  59. Exact chip name: H8/300
  60. GDB includes a simulator.
  61. [H8/300 Application Binary Interface for GCC](http://gcc.gnu.org/projects/h8300-abi.html).
  62. - i386 (i486, i586, i686, i786)
  63. Manufacturer: Intel
  64. [Intel®64 and IA-32 Architectures Software Developer's Manuals](http://developer.intel.com/products/processor/manuals/index.htm)
  65. Some information about optimizing for x86 processors, links to x86 manuals and documentation:
  66. <http://www.agner.org/optimize/>
  67. [www.sandpile.org:](http://www.sandpile.org) Christian Ludloff's technical x86 processor information.
  68. - i860
  69. Manufacturer: Intel
  70. - m32c
  71. Manufacturer: Renesas
  72. [Renesas M16C Family (R32C/M32C/M16C) Site](http://www.renesas.com/products/mpumcu/m16c/m16c_landing.jsp)
  73. GDB includes a simulator.
  74. - m32r
  75. Manufacturer: Renesas
  76. GDB includes a CGEN generated simulator.
  77. - m68hc11 (m68hc12)
  78. Manufacturer: Motorola
  79. GDB includes a 68HC11 and a 68HC12 simulator.
  80. - m68k
  81. Manufacturer: Motorola
  82. - mcore
  83. Manufacturer: Motorola
  84. GDB includes a simulator.
  85. - MeP
  86. Manufacturer: Toshiba
  87. SID includes a MeP simulator.
  88. - MicroBlace
  89. Manufacturer: Xilinx
  90. [MicroBlaze Processor Reference Guide](http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/mb_ref_guide.pdf)
  91. GDB includes a simulator for an earlier version of the processor.
  92. - mips (mipsel, mips64, mips64el)
  93. The \*el variants are little-endian configurations.
  94. - MMIX
  95. Manufacturer: none. There is a simulator, see links below.
  96. Acronym stands for: Roman numeral for 2009, pronounced [EM-micks]. The number stands for the average of numbers of "14 actual computers very similar to MMIX". The name may also be due to a predecessor appropriately named MIX.
  97. MMIX is used in program examples in [Donald E. Knuth](http://www-cs-faculty.stanford.edu/~knuth/)'s [The Art of Computer Programming](http://www-cs-faculty.stanford.edu/~knuth/taocp.html) (ISBN 0-201-89683-4).
  98. [Knuth's MMIX page](http://www-cs-faculty.stanford.edu/~knuth/mmix.html) has more information about MMIX. Knuth also wrote a [book specifically about MMIX](http://www-cs-faculty.stanford.edu/~knuth/mmixware.html) (MMIXware, ISBN 3-540-66938-8).
  99. - mn10300
  100. Manufacturer: Matsushita
  101. Alternate chip name: AM30
  102. GDB includes a simulator.
  103. - msp430
  104. Manufacturer: Texas Instruments
  105. GDB includes a simulator.
  106. - ns32k
  107. Manufacturer: National Semiconductor
  108. [NS32FX200 Home Page](http://www.national.com/pf/NS/NS32FX200.html)
  109. - pa
  110. Manufacturer: HP
  111. [PA-RISC](http://h21007.www2.hp.com/portal/site/dspp/menuitem.1b39e60a9475acc915b49c108973a801/?chid=6dc55e210a66a010VgnVCM100000275d6e10RCRD#topic_pa_risc_architecture) is preferred over the older HPPA acronym (Hewlett-Packard Precision Architecture).
  112. <http://parisc-linux.org/documentation/index.html> is another good source of PA-RISC documention.
  113. - pdp11
  114. Manufacturer: DEC
  115. [PDP-11 FAQ](http://www.village.org/pdp11/faq.html)
  116. [Simulators](http://simh.trailing-edge.com/)
  117. - rs6000 (powerpc, powerpcle)
  118. Manufacturer: IBM, Motorola
  119. [AIX V4.3 Assembler Language Ref.](http://publib16.boulder.ibm.com/pseries/en_US/infocenter/base/43_docs/aixassem/alangref/toc.htm)
  120. [AIX 5L Assembler Language Ref.](http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixassem/alangref/alangreftfrm.htm)
  121. [Documentation and tools at power.org](https://www.power.org/documentation/)
  122. - rx
  123. Manufacturer: Renesas
  124. [RX610 Hardware Manual](http://documentation.renesas.com/eng/products/mpumcu/rej09b0460_rx610hm.pdf)
  125. - sh
  126. Manufacturer: Renesas, or various licensed by SuperH Inc
  127. CPUs include: SH1, SH2, SH2-DSP, SH3, SH3-DSP, SH4, SH5 series.
  128. [Renesas SuperH Processors](http://www.renesas.com/products/mpumcu/superh/superh_landing.jsp)
  129. [SuperH Home Page](http://www.superh.com/)
  130. GDB includes a simulator.
  131. - sparc (sparclite, sparc64)
  132. Manufacturer: Sun
  133. Acronym stands for: Scalable Processor ARChitecture
  134. - tilegx
  135. Manufacturer: Tilera
  136. [Documentation](http://www.tilera.com/scm/docs/index.html)
  137. - tilepro
  138. Manufacturer: Tilera
  139. [Documentation](http://www.tilera.com/scm/docs/index.html)
  140. - v850
  141. Manufacturer: NEC
  142. - vax
  143. Manufacturer: DEC
  144. - xtensa
  145. Manufacturer: Tensilica
  146. - z/Architecture (S/390)
  147. Manufacturer: IBM
  148. [ESA/390 Principles of Operation](http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/dz9ar008/CCONTENTS)
  149. [z/Architecture Principles of Operation](http://publibfp.boulder.ibm.com/cgi-bin/bookmgr/BOOKS/dz9zr002/CCONTENTS)
  150. ## Collected Papers/Sites on Standards, Compilers, Optimization, Etc.
  151. ### C information
  152. - C standards information:
  153. - [WG14 (C standards committee)](http://www.open-std.org/jtc1/sc22/wg14/)
  154. - [Draft C99 Rationale](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n897.pdf)
  155. - [C99 Defect Reports](http://www.open-std.org/jtc1/sc22/wg14/www/docs/summary.htm)
  156. - [C89 Rationale (sources)](ftp://ftp.uu.net/doc/standards/ansi/X3.159-1989/)
  157. - [C89 Rationale (HTML)](http://www.lysator.liu.se/c/rat/title.html)
  158. - [C89 Technical Corrigendum 1](http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc1.htm)
  159. - [C89 Technical Corrigendum 2](http://www.open-std.org/jtc1/sc22/wg14/www/docs/tc2.htm)
  160. - [C89 Defect Reports](http://www.open-std.org/jtc1/sc22/wg14/www/docs/dr.htm)
  161. - Sequence point rules in C:
  162. - [A formal model of sequence points and related issues by Clive Feather](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n925.htm)
  163. - [C formalised in HOL, thesis by Michael Norrish](http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-453.pdf)
  164. - [Sequence points analysis by Raymond Mak](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n926.htm)
  165. - [Another formalism for sequence points by D. Hugh Redelmeier](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n927.htm)
  166. - C historical information:
  167. - [The Development of the C Language](http://cm.bell-labs.com/cm/cs/who/dmr/chist.html), by Dennis M. Ritchie (also in [PostScript](http://cm.bell-labs.com/cm/cs/who/dmr/chist.ps) and [PDF](http://cm.bell-labs.com/cm/cs/who/dmr/chist.pdf)).
  168. - An early [C Reference Manual](http://cm.bell-labs.com/cm/cs/who/dmr/cman.ps).
  169. ### C++ information
  170. - [ISO Committee homepage (defects list, etc)](http://www.open-std.org/jtc1/sc22/wg21/)
  171. - [The SGI STL page](http://www.sgi.com/tech/stl/)
  172. - [STLport homepage](http://www.stlport.org/)
  173. - [Template Numeric Toolkit](http://math.nist.gov/tnt/)
  174. - [The Boost C++ Libraries](http://www.boost.org)
  175. - [Internet sites for C++ users](http://www.robertnz.net/cpp_site.html)
  176. - [Nathan Myers' locale page](http://www.cantrip.org/cpp.html)
  177. - [Nicolai Josuttis' Standard Library book](http://www.josuttis.com/libbook/)
  178. ### Objective-C Information
  179. - [Objective-C Language Description](http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/) (Apple Computer)
  180. ### Fortran information {#fortran}
  181. - Fortran standards information:
  182. - [Fortran standards committee](http://www.j3-fortran.org/) (includes references to the current draft of the Fortran standard)
  183. - Fortran historical information:
  184. - [FORTRAN 77 Standard](http://www.fortran.com/F77_std/rjcnf.html)
  185. - [Fortran FAQs, books and software](http://www.fortran.com/info.html)
  186. - Testing and Validation - Some packages aimed at Fortran compiler validation.
  187. - [FORTRAN 77 test suite](http://www.itl.nist.gov/div897/ctg/fortran_form.htm) by the NIST Information Technology Laboratory ([license](http://www.itl.nist.gov/div897/ctg/software.htm)) The test suite contains legal and operational Fortran 77 code.
  188. - IDRIS [Low level bench tests of Fortran 95](http://www.idris.fr/data/publications/F95/test_F95_english.html). It tests some Fortran 95 intrinsics.
  189. - The g77 testsuite (which is part of GCC).
  190. - Test suite of [ftnchek](http://www.dsm.fordham.edu/~ftnchek/), included in its distribution. It contains some illegal code and therefore makes it possible to stress the compiler error handling.
  191. - [Checking properties of the compiler and the run-time environment](http://ftp.cac.psu.edu/pub/ger/fortran/chksys.htm) by Arjen Markus (source provided).
  192. - [gdbf95](http://gdbf95.sourceforge.net/) test suite.
  193. - Tests of run-time checking capabilities
  194. - [Polyhedron tests](http://www.polyhedron.com/)
  195. - [compilers test sets](http://ftp.aset.psu.edu/pub/ger/fortran/test/) by H. Knoble & A. Desitter
  196. - Other resources:
  197. - [Michel Olagnon's Fortran 90 List](http://www.ifremer.fr/ditigo/molagnon/fortran90/engfaq.html) contains a "Tests and Benchmarks" section mentioning commercial test suites.
  198. - [Herman D. Knoble's Fortran Resources](http://www.personal.psu.edu/faculty/h/d/hdk/fortran.html) contain some sections on compiler validation and benchmarking.
  199. - Complying with Fortran 90, How does the current crop of Fortran 90 compilers measure up to the standard?, Steven Baker, Dr Dobb's, January 1995. It described the results of several commercial test suites.
  200. - Fortran packages - Some packages containing (mostly) legal Fortran code.
  201. - Books with source code:
  202. - [Example programs](http://www.fortranplus.co.uk/fortran_books.html) of Introducing Fortran 95 by Ian Chivers and Jane Sleightholme.
  203. - [Examples](http://www.fortran.com/F/books.html) of Essential Fortran 90 & 95 by Loren Meissner.
  204. - [Source code](http://www.mhhe.com/engcs/general/chapman/intro/) of Introduction To Fortran 90/95 by Stephen Chapman.
  205. - [Source code](http://www.mhhe.com/engcs/general/chapman/) of Fortran 90/95 for Scientists and Engineers by Stephen Chapman.
  206. - Historical material - A few links for your enjoyment.
  207. - [Historic Documents in Computer Science](http://www.fh-jena.de/~kleine/history/) by Karl Kleine
  208. - [The writings of Edsger W. Dijkstra (RIP)](http://www.cs.utexas.edu/users/EWD/)
  209. ### Ada information
  210. - Ada standards information:
  211. - [WG9 (Ada standards committee):](http://www.open-std.org/jtc1/sc22/wg9/)
  212. - [Ada Issues](http://www.ada-auth.org/ais.html)
  213. - [List of Ada standards (Ada Information Clearinghouse):](http://www.adaic.org/ada-resources/standards/)
  214. - [Annotated Ada 2005 Reference Manual](http://www.adaic.org/resources/add_content/standards/05aarm/html/AA-TTL.html)
  215. - [Ada 2005 Reference Manual](http://www.adaic.org/resources/add_content/standards/05rm/html/RM-TTL.html)
  216. - [Ada 2005 Rationale](http://www.adaic.org/resources/add_content/standards/05rat/html/Rat-TTL.html)
  217. - [Annotated Ada 95 Reference Manual](http://www.adaic.org/resources/add_content/standards/95aarm/AARM_HTML/AA-TTL.html)
  218. - [Ada 95 Reference Manual](http://www.adaic.org/resources/add_content/standards/95lrm/ARM_HTML/RM-TTL.html)
  219. - [Ada 95 Rationale](http://www.adaic.org/resources/add_content/standards/95rat/rat95html/rat95-contents.html)
  220. - [Ada 83 Reference Manual](http://archive.adaic.com/standards/83lrm/html/ada_lrm.html)
  221. - [Ada 83 Rationale](http://archive.adaic.com/standards/83rat/html/Welcome.html)
  222. - Related standards:
  223. - [Ada Semantic Interface Specification (ASIS)](http://www.sigada.org/WG/asiswg/)
  224. - Compiler validation:
  225. - [Ada Conformity Assessment Test Suite (ACATS)](http://www.ada-auth.org/acats.html)
  226. - Other resources:
  227. - [AdaCore Libre Site](http://libre.adacore.com/)
  228. - [GNAT: The GNU Ada Compiler](https://www2.adacore.com/gap-static/GNAT_Book/html/)
  229. - [Ada Quality & Style Guide](http://www.adaic.org/resources/add_content/docs/95style/html/cover.html)
  230. - [Guide for the use of the Ada Ravenscar Profile in high integrity systems](http://www.sigada.org/ada_letters/jun2004/ravenscar_article.pdf)
  231. ### Go information
  232. - [General Go information](http://golang.org/)
  233. - [Go language specification](http://golang.org/ref/spec)
  234. ### Modula 3 information
  235. - <http://www.cmass.com>
  236. - <http://www.modula3.org>
  237. ### Miscellaneous information
  238. - [What Every Computer Scientist Should Know about Floating-Point Arithmetic](http://www.validlab.com/goldberg/paper.pdf) by David Goldberg, including Doug Priest's supplement (PDF format)
  239. - [Differences Among IEEE 754 Implementations](http://www.validlab.com/goldberg/addendum.html) by Doug Priest (included in the PostScript-format document above)
  240. - [IEEE 754r](http://en.wikipedia.org/wiki/IEEE_754r), an ongoing revision to the IEEE 754 floating point standard.
  241. - [Information on the Digital UNIX/Compaq Tru64 UNIX object file format](http://www.tru64unix.compaq.com/docs/base_doc/DOCUMENTATION/V51_HTML/SUPPDOCS/OBJSPEC/TITLE.HTM)
  242. - [IBM Journal of Research and Development](http://www.almaden.ibm.com/journal/)
  243. - [System V PowerPC ABI](http://refspecs.freestandards.org/elf/elfspec_ppc.pdf)
  244. - [Application Binary Interface for the ARM Architecture (EABI)](http://www.arm.com/products/DevTools/ABI.html)
  245. - [DWARF Workgroup](http://dwarfstd.org/)
  246. - [Debugging/object info](ftp://ftp.sgi.com/sgi/dev/davea/objectinfo.html) by David B.Anderson (including links to some DWARF tools)
  247. - EG3 maintains a list of compiler Internet resources, including FAQ's, papers, hot list pages, potential software/shareware, all known companies, etc.:
  248. - <http://www.eg3.com/embeddedsoftware/compiler.htm>
  249. - These resource pages are published as part of EG3's Free Electronic Engineers' Toolbox at:
  250. - <http://www.eg3.com/index.htm>
  251. - [Links related to many compiler topics](http://www.compilerconnection.com/)
  252. - [comp.compilers archive](http://compilers.iecc.com/index.phtml)
  253. - Steven Muchnick (1997) "Advanced Compiler Design and Implementation". 880pp. ISBN: 1-55860-320-4.
  254. - Robert Morgan (1998) "Building an Optimizing Compiler". 300pp. ISBN: 1-55558-179-X.
  255. - [The Open Group](http://www.opengroup.org/) has quite a bit on [POSIX and friends](http://pubs.opengroup.org/onlinepubs/009695399/toc.htm).
  256. - [Unicode](http://www.unicode.org) and [Unicode Normalization Forms](http://www.unicode.org/reports/tr15/).
  257. ## Chip Documentation of Obsolete Ports
  258. Below is the list of ports that GCC used to support.
  259. - 1750a
  260. Exact chip name: MIL-STD-1750A processor
  261. Manufacturers: various
  262. [Specification](http://legacy.cleanscape.net/stdprod/xtc1750a/resources/mil-std-1750.zip)
  263. - a29k
  264. Manufacturer: AMD
  265. - clipper
  266. Manufacturer: Intergraph
  267. Exact machine name: CLIPPER
  268. - convex (c1, c2, c3[248])
  269. Manufacturer: Convex (HP)
  270. - d30v
  271. Manufacturer: Mitsubishi
  272. There is no longer any reference to this chip anywhere on the manufacturer's web site; it may be dead.
  273. GDB includes a simulator.
  274. - dsp16xx
  275. Manufacturer: AT&T
  276. - m88k
  277. Manufacturer: Motorola
  278. - mn10200
  279. Manufacturer: Matsushita
  280. GDB includes a simulator.
  281. - pj (picoJava)
  282. Manufacturer: Sun
  283. - romp
  284. Manufacturer: IBM
  285. Acronym stands for: Research/Office Products MicroProcessor
  286. The ROMP was the processor inside the IBM PC/RT.