GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-12-06) - page 1 of 10
 
___________________________________________________________________
Writing a C Compiler, Part 2
139 points by luu
https://norasandler.com/2017/12/05/Write-a-Compiler-2.html
___________________________________________________________________
 
chrisaycock - 4 hours ago
Discussion for Part 1:https://news.ycombinator.com/item?id=15821899
 
jsteemann - 3 hours ago
Nice article and a good read! Just came in and read part 2, so
please don't blame me if the following has been posted in a comment
for part 1 already.IMHO there are plenty of good books on compiler
construction. One of the best ones I ever got my hands on was a
book by Niklaus Wirth (a now-retired professor, among other things,
he created Pascal, Oberon and other languages). He explains all the
details of creating your own compiler from the ground up.It's
available only here:
https://www.inf.ethz.ch/personal/wirth/CompilerConstruction/...In
that book, he is creating a compiler for Oberon, a language that
was more or less used for didactic purposes only.  The book is also
pretty dated, so there is not much to take away in terms of
practically usable compiler code. But I can still recommend it to
everyone, because I think it's didactically very good, and provides
all the necessary details that make compiler construction so
worthwhile (and annoying).
 
  lboasso - 1 hours ago
  I agree, Niklaus Wirth's compiler book is a good introduction to
  the topic.To showcase Wirth's approach, I wrote a self hosted
  Oberon compiler for the JVM:
  https://github.com/lboasso/oberoncThe compiler can also be used
  to compile and run the source code of Oberon0 provided in the
  book, all you need is a JVM installed.
 
wyufro - 50 minutes ago
I really feel it doesn?t make much sense to generate assembly any
longer. It?s much more reasonable to generate IR (for example for
llvm). Then you get free optimizations and at least some
portability. It?s probably easier as well to not keep track of
registers.
 
roknovosel - 4 hours ago
I feel like a good place to share some of the resources I've
compiled from HN regarding compilers/interpreters
construction:MOOC/Courses:-
https://cseweb.ucsd.edu/classes/sp17/cse131-a/-
http://cs.brown.edu/courses/cs173/2016/index.html-
https://lagunita.stanford.edu/courses/Engineering/Compilers/...-
http://www.craftinginterpreters.com/Blog posts:- An Intro to
Compilers (https://nicoleorchard.com/blog/compilers) and the
accompanying Hacker news comments
(https://news.ycombinator.com/item?id=15005031)- Resources for
Amateur Compiler Writers (https://c9x.me/compile/bib/)Other
resources:- Tweet
(https://twitter.com/munificentbob/status/901543375945388032) by
Bob Nystrom (works on Dart VM and creator of Crafting Interpreters)
-- Wren (http://wren.io/): another project by Bob Nystrom, a
scripting language written in C with beautifully documented code (I
recommend checking it out on GitHub
(https://github.com/munificent/wren))- Ask HN: Resources for
building a programming language?
(https://news.ycombinator.com/item?id=15171238)- Mal ? Make a Lisp,
in 68 languages (https://news.ycombinator.com/item?id=15226110)
 
  b3b0p - 2 hours ago
  Thank you! Very nice.Your comment made me do a quick Google for
  "Awesome Compilers"Sure enough: https://github.com/aalhour
  /awesome-compilers(I didn't check if the links posted here are in
  the awesome-compilers repo though.)Edit: I also want to thank OP
  for continuing part 2. I didn't read part 1 completely because I
  figured it had a chance to be an abandoned blog post series. Keep
  it up OP!
 
  unwind - 3 hours ago
  Great links, thanks.Markup ate your Wren source link [1].[1]:
  https://github.com/munificent/wren
 
jsteemann - 2 hours ago
A "tiny" (read: small) C compiler can also be found at:
https://bellard.org/tcc/It has been unmaintained for a while now,
but it's still good as a starting point.Interestingly enough it's a
spin-off of a code submission for winning the international
obfuscated C code contest (http://www.ioccc.org/).Original code
(covering just a subset of C) can be found here:
https://bellard.org/otcc/
 
  amadeusz - 2 hours ago
  I think tcc is now community maintained, see "Savannah project
  page and git repository", and you can get there link to project
  git, which was last updated just few days ago.
  (http://repo.or.cz/w/tinycc.git) so seems to be active.
 
    dane-pgp - 1 hours ago
    Earlier this year, tcc (re)gained the ability to compile gcc
    4.7:http://lists.nongnu.org/archive/html/tinycc-
    devel/2017-05/ms...This is an important result for activities
    such as Diverse Double-Compiling (a response to the Trusting
    Trust attack), and as part of the exciting work being done
    towards bootstrapping a modern Linux environment from source
    and a hex/assembly base:http://bootstrappable.org/
 
remcob - 2 hours ago
The explanation for bitwise complement ignores the word-size which
matters a lot here. For example ~4 = 251 in uint8, not 3 like in
the example.