Last active
October 31, 2024 21:30
-
-
Save MrSmith33/d4edaeea1a1f9be0e25146aebfa3bd2e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Compiler design | |
Compilers | |
https://github.com/snazzy-d/SDC | |
https://github.com/dbohdan/embedded-scripting-languages | |
https://github.com/ishiura-compiler/CF3 | |
https://gitlab.com/styx-lang/styx | |
http://mlton.org/CompilerOverview | |
https://github.com/TurkeyMan/mlang | |
https://github.com/FeepingCreature/fcc | |
https://github.com/jondgoodwin/cone | |
https://github.com/Nafees10/qscript | |
https://github.com/skiplang/skip | |
https://github.com/benfowler/c-minus | |
https://github.com/aalhour/awesome-compilers | |
https://www.youtube.com/watch?v=Z4oYSByyRak | |
https://twitter.com/andy_kelley/status/1099906488645156865 | |
https://github.com/felixangell/krug | |
https://combinatorylogic.github.io/mbase-docs/lang0.html | |
http://tibleiz.net/copper/ | |
https://github.com/beast-lang/beast-dragon | |
https://adamant-lang.org/ | |
https://github.com/Pierre-vh/Moonshot | |
https://github.com/HackerFoo/poprc | |
https://github.com/gnuless/ncc | |
https://github.com/egel-lang/egel | |
https://repo.or.cz/tinycc.git | |
https://github.com/rui314/8cc | |
https://github.com/rui314/9cc | |
https://github.com/rui314/chibicc | |
https://github.com/wren-lang/wren | |
https://github.com/zherczeg/sljit | |
https://github.com/zesterer/atto | |
https://krug-lang.org/ | |
https://github.com/odin-lang/Odin | |
https://github.com/scrossuk/locic | |
https://github.com/microsoft/DirectXShaderCompiler | |
https://github.com/Himself65/OpenArkCompiler | |
https://t3x.org/t3x/t.t.html | |
https://github.com/marcpaq/b1fipl | |
https://github.com/zakirullin/tiny-compiler | |
https://github.com/neeilan/neeilang | |
https://github.com/jserv/amacc | |
https://github.com/ProjectIrisLang/Project-Iris | |
https://blog.can.ac/2020/04/11/writing-an-optimizing-il-compiler-for-dummies-by-a-dummy/ | |
https://github.com/aardappel/lobster/tree/master/dev | |
https://github.com/OrangeBacon/mcc | |
https://github.com/JianpingZeng/xcc | |
https://github.com/ipankajg/ceed | |
https://github.com/baziotis/minijava-cpp | |
https://github.com/nrnrnr/qc-- | |
https://github.com/morganstanley/hobbes | |
https://github.com/TinyCC/tinycc | |
https://github.com/FeepingCreature/cx | |
https://github.com/marcobambini/gravity | |
https://intuitiveexplanations.com/tech/kalyn | |
https://github.com/Shopify/yjit | |
https://github.com/ArkScript-lang/Ark | |
https://github.com/grassator/mass/ | |
https://github.com/Gwion/Gwion | |
Lexing | |
https://github.com/nothings/stb/blob/master/stb_c_lexer.h | |
https://nothings.org/computer/lexing.html | |
https://github.com/oilshell/oil/wiki/Why-Lexing-and-Parsing-Should-Be-Separate | |
https://old.reddit.com/r/ProgrammingLanguages/comments/gdt3xd/why_lexing_and_parsing_should_be_separate/ | |
https://foonathan.net/2021/02/column/ | |
https://old.reddit.com/r/Compilers/comments/nobrhi/if_youre_not_using_a_lexer_generator_for_your/ | |
Parsing | |
https://github.com/Eliah-Lakhin/papa-carlo | |
http://lakhin.com/projects/papa-carlo/ | |
https://mdaines.github.io/grammophone/# | |
https://github.com/CyberShadow/tree-sitter-d | |
https://github.com/afnanenayet/diffsitter | |
-------------------- | |
https://www.booleanworld.com/building-recursive-descent-parsers-definitive-guide/ | |
http://eli.thegreenplace.net/2009/03/14/some-problems-of-recursive-descent-parsers/ | |
https://www.abubalay.com/blog/2018/04/08/recursive-ascent | |
http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/ | |
https://dev.to/jrop/pratt-parsing | |
http://eli.thegreenplace.net/2010/01/02/top-down-operator-precedence-parsing | |
https://matklad.github.io/2020/04/15/from-pratt-to-dijkstra.html | |
https://habr.com/ru/post/494316/ | |
http://effbot.org/zone/simple-top-down-parsing.htm | |
http://blog.oxyllang.org/internals/parsing/2019/10/27/parsing-expresions-with-pratt.html | |
https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html | |
https://www.robertjacobson.dev/designing-a-pratt-parser-generator | |
-------------------- | |
https://www.youtube.com/watch?v=9Q--oX5muxw | |
http://www.inf.puc-rio.br/~roberto/lpeg/ | |
https://github.com/s4ke/moar | |
https://jeffreykegler.github.io/personal/timeline_v3 | |
https://habr.com/post/412905/ | |
http://jeffreykegler.github.io/Ocean-of-Awareness-blog/individual/2018/05/knuth_1965.html | |
https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm | |
https://v8.dev/blog/scanner | |
https://www.youtube.com/watch?v=a1rC79DHpmY | |
https://www.youtube.com/watch?v=0CGzC_iss-8 | |
https://www.thestrangeloop.com/2018/tree-sitter---a-new-parsing-system-for-programming-tools.html | |
https://habr.com/ru/post/471986/ | |
https://www.bottlecaps.de/rr/ui | |
https://www.oilshell.org/blog/2020/01/parser-benchmarks.html | |
https://temperlang.dev/design-sketches/parsing-program-structure.html | |
https://old.reddit.com/r/ProgrammingLanguages/comments/gk1uwh/preprint_pika_parsing_parsing_in_reverse_solves/ | |
https://www.zinkov.com/posts/2016-01-12-indentation-sensitive-parsing/ | |
https://www.eyalkalderon.com/nom-error-recovery/ | |
https://github.com/lerno/titanos/blob/master/titanos/src/parsing.c | |
http://dmitrysoshnikov.com/courses/parsing-algorithms/ | |
https://tratt.net/laurie/blog/entries/automatic_syntax_error_recovery.html | |
https://developers.redhat.com/blog/2021/05/04/optimizing-the-clang-compilers-line-to-offset-mapping/ | |
https://old.reddit.com/r/Compilers/comments/nobrhi/if_youre_not_using_a_lexer_generator_for_your/ | |
Backend | |
ABI | Calling Conventions | |
https://github.com/hjl-tools/x86-psABI/wiki/X86-psABI | |
https://gitlab.com/x86-psABIs/x86-64-ABI | |
https://elronnd.net/writ/boring/2021-05-07_abi-wrong.html | |
https://news.ycombinator.com/item?id=27089184 | |
https://lobste.rs/s/ltroon/your_abi_is_probably_wrong | |
https://github.com/scrossuk/llvm-abi | |
https://apoorvaj.io/exploring-calling-conventions/ | |
https://nickdesaulniers.github.io/blog/2014/04/18/lets-write-some-x86-64/ | |
https://dr-knz.net/go-calling-convention-x86-64.html | |
https://www.dyncall.org/ | |
https://www.dyncall.org/docs/manual/manualse11.html#x12-57000D | |
https://v8.dev/blog/adaptor-frame | |
https://llvmphighter.blogspot.com/2021/03/calling-convention-in-llvm.html | |
https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=msvc-160 | |
https://stackoverflow.com/questions/40475902/is-garbage-allowed-in-high-bits-of-parameter-and-return-value-registers-in-x86-6 | |
Stack tracing | |
https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-160 | |
Instr selection | |
https://eli.thegreenplace.net/2012/11/24/life-of-an-instruction-in-llvm | |
http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html | |
https://www.llvm.org/docs/MCJITDesignAndImplementation.html | |
https://github.com/cretonne/cretonne | |
https://habr.com/post/359132/ | |
https://bitbucket.org/inferno-os/inferno-os/src/default/utils/6l/ | |
https://github.com/intelxed/xed | |
https://github.com/golang/go/issues/22779 | |
https://groups.google.com/forum/#!topic/golang-dev/DdQX1mN1Rd4 | |
https://habr.com/company/badoo/blog/317864/ | |
https://habr.com/company/mailru/blog/317180/ | |
https://www.youtube.com/watch?v=6Y5CZ7_tyA4 | |
https://keleshev.com/compiling-to-assembly-from-scratch-the-book | |
https://danlark.org/2020/06/14/128-bit-division/ | |
https://hacks.mozilla.org/2020/10/a-new-backend-for-cranelift-part-1-instruction-selection/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/natkvz/compilers_instruction_selection/ | |
TLS | Thread Local Storage | |
https://docs.microsoft.com/en-us/windows/win32/procthread/process-and-thread-functions | |
https://chao-tic.github.io/blog/2018/12/25/tls | |
https://duckduckgo.com/?q=windows+thread+local+storage+implementation&t=ffab&atb=v91-1&ia=web | |
https://en.wikipedia.org/wiki/Thread-local_storage#D | |
https://en.wikipedia.org/wiki/Win32_Thread_Information_Block#cite_note-3 | |
https://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FThread%2FTEB.html | |
https://www.geoffchappell.com/studies/windows/win32/ntdll/structs/teb/index.htm | |
https://docs.microsoft.com/en-us/windows/win32/procthread/thread-local-storage?redirectedfrom=MSDN | |
https://docs.microsoft.com/en-us/windows/win32/dlls/using-thread-local-storage-in-a-dynamic-link-library?redirectedfrom=MSDN | |
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsalloc | |
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlssetvalue | |
https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-tlsgetvalue | |
https://github.com/wine-mirror/wine/blob/1aff1e6a370ee8c0213a0fd4b220d121da8527aa/include/winternl.h#L347 | |
https://wiki.osdev.org/Segmentation | |
https://manybutfinite.com/post/memory-translation-and-segmentation/ | |
https://stffrdhrn.github.io/hardware/embedded/openrisc/2020/01/19/tls.html | |
https://stffrdhrn.github.io/software/toolchain/openrisc/2020/07/21/relocs_tls_impl.html | |
https://chao-tic.github.io/blog/2018/12/25/tls#the-thread-register | |
https://akkadia.org/drepper/tls.pdf | |
Code generation | |
https://thephd.dev/lambdas-nested-functions-block-expressions-oh-my | |
http://orangejuiceliberationfront.com/how-to-write-a-compiler/ | |
http://orangejuiceliberationfront.com/intel-assembler-on-mac-os-x/ | |
https://www.nickwilcox.com/blog/arm_vs_x86_memory_model/ | |
https://www.systutorials.com/beginners-guide-x86-64-instruction-encoding/ | |
https://arxiv.org/abs/2107.00564 | |
Closures | |
https://stackoverflow.com/questions/18051012/implementing-closures-in-a-compiler | |
FFI | |
https://www.possiblerust.com/guide/inbound-outbound-ffi | |
syscalls | |
https://stackoverflow.com/questions/12946958/what-is-the-interface-for-arm-system-calls-and-where-is-it-defined-in-the-linux | |
https://stackoverflow.com/questions/4930922/android-linux-system-call-list | |
https://stackoverflow.com/questions/38577609/difference-in-abi-between-x86-64-linux-functions-and-syscalls | |
https://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/ | |
https://github.com/opensource-apple/xnu/blob/master/bsd/kern/syscalls.master | |
https://github.com/JustasMasiulis/inline_syscall | |
https://j00ru.vexillium.org/syscalls/nt/32/ | |
https://j00ru.vexillium.org/syscalls/nt/64/ | |
SSE | |
https://stackoverflow.com/questions/59838261/how-can-you-insert-a-nan-into-a-xmm-register | |
https://stackoverflow.com/questions/35085059/what-are-the-best-instruction-sequences-to-generate-vector-constants-on-the-fly | |
Switch | |
https://github.com/golang/go/issues/5496 | |
about:blank | |
https://github.com/golang/go/issues/15780 | |
https://go-review.googlesource.com/c/go/+/26770 | |
Address spaces | |
https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html | |
https://lists.llvm.org/pipermail/llvm-dev/2021-June/151199.html | |
Code placement | |
https://kunalspathak.github.io/2021-03-15-Loop-Alignment/ | |
https://www.youtube.com/watch?v=IX16gcX4vDQ | |
Exceptions | |
https://nim-lang.org/araq/gotobased_exceptions.html | |
https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64?redirectedfrom=MSDN&view=msvc-160 | |
Mangling | |
https://hydro-sdk.io/blog/mangling-dynamic-language-symbols/ | |
Atomics | |
https://blog.yiningkarlli.com/2021/05/porting-takua-to-arm-pt1.html | |
https://git.sr.ht/~mcf/qbe | |
https://github.com/robertmuth/Cwerg | |
https://keleshev.com/compiling-to-assembly-from-scratch-the-book | |
https://blog.benj.me/2021/02/17/cranelift-codegen-primer/ | |
https://revers.engineering/applied-re-accelerated-assembly-p1/ | |
http://lazarenko.me/switch/ | |
https://lwn.net/Articles/691932/ | |
https://habr.com/ru/post/506832/ | |
https://www.youtube.com/watch?v=OWgWDx_gB1I | |
https://github.com/apple/swift/blob/master/lib/IRGen/TypeLayoutVerifier.cpp | |
https://belkadan.com/blog/2020/09/Swift-Runtime-Type-Layout/ | |
https://jonathan2251.github.io/lbd/about.html | |
about:blank | |
https://cfallin.org/blog/2020/09/18/cranelift-isel-1/ | |
https://cfallin.org/blog/2021/01/22/cranelift-isel-2/ | |
https://github.com/keleshev/compiling-to-assembly-from-scratch | |
https://github.com/pfalcon/awesome-program-analysis | |
Android | |
https://maxkersten.nl/binary-analysis-course/binary-types/android/ | |
https://dpldocs.info/this-week-in-d/Blog.Posted_2019_12_09.html#my-jni-module | |
Windows | |
https://github.com/j00ru/windows-syscalls | |
https://stackoverflow.com/questions/2197699/is-it-necessary-to-explicitly-stop-all-threads-prior-to-exiting-a-win32-applicat | |
https://blog.christophetd.fr/hiding-windows-api-imports-with-a-customer-loader/ | |
https://old.reddit.com/r/programming/comments/l25lz2/microsoft_unifies_all_windows_apis_under_a_single/ | |
https://kennykerr.ca/2021/01/21/rust-for-windows/ | |
https://github.com/microsoft/win32metadata | |
Linux | |
https://akkadia.org/drepper/ | |
Formats | |
APK | |
https://habr.com/ru/post/527584/ | |
PE/COFF | |
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format | |
https://msdn.microsoft.com/en-us/library/ms809762(d=printer).aspx | |
https://github.com/corkami/docs/blob/master/PE/PE.md | |
https://www.bigmessowires.com/2015/10/08/a-handmade-executable-file/ | |
http://wiki.osdev.org/PE | |
https://security.stackexchange.com/questions/24785/where-is-the-pe-loader-in-windows | |
https://github.com/tishion/mmLoader | |
http://www.ntcore.com/exsuite.php | |
http://www.brokenthorn.com/Resources/OSDevPE.html | |
http://wayback.archive.org/web/20100704110120/http://www.phreedom.org/solar/code/tinype/ | |
http://sandsprite.com/CodeStuff/Understanding_imports.html | |
https://github.com/dotnet/core/blob/master/Documentation/diagnostics/portable_pdb.md | |
https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2017 | |
http://bytepointer.com/articles/the_microsoft_rich_header.htm | |
https://habr.com/ru/post/515058/ | |
https://www.codeproject.com/Articles/1253835/The-structure-of-import-library-file-lib | |
https://github.com/hasherezade/libpeconv | |
https://www.ibm.com/docs/en/aix/7.2?topic=formats-xcoff-object-file-format | |
ELF | |
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html | |
https://github.com/yazd/elf-d | |
https://github.com/finixbit/elf-parser | |
https://github.com/faemiyah/dnload | |
http://www.muppetlabs.com/%7Ebreadbox/software/tiny/teensy.html | |
https://blog.k3170makan.com/2018/09/introduction-to-elf-format-elf-header.html | |
https://blog.k3170makan.com/2018/09/introduction-to-elf-format-part-ii.html | |
https://blog.k3170makan.com/2018/09/introduction-to-elf-file-format-part.html?m=1 | |
https://blog.k3170makan.com/2018/10/introduction-to-elf-format-part-iv.html | |
https://blog.k3170makan.com/2018/10/introduction-to-elf-format-part-v.html | |
https://blog.k3170makan.com/2018/10/introduction-to-elf-format-part-vi.html | |
https://habr.com/ru/company/inforion/blog/460247/ | |
https://habr.com/ru/post/473740/ | |
https://github.com/horsicq/XELFViewer | |
https://github.com/zznop/drow | |
https://github.com/aspieln3r/spergland/wiki/ELF-File-:-short-summary | |
file:///D:/Book/Programming/Compilers/x86_64/elf-64-gen.pdf | |
https://www.muppetlabs.com/~breadbox/software/ELF.txt | |
https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html | |
http://web.mit.edu/freebsd/head/sys/sys/elf64.h | |
https://blogs.oracle.com/solaris/inside-elf-symbol-tables-v2 | |
https://github.com/aspieln3r/spergland/wiki | |
https://old.reddit.com/r/Compilers/comments/jfkaln/resources_for_linux_elf_files/ | |
https://fasterthanli.me/series/making-our-own-executable-packer/part-1 | |
https://fasterthanli.me/series/making-our-own-executable-packer/part-2 | |
https://oswalt.dev/2020/11/anatomy-of-a-binary-executable/ | |
https://news.ycombinator.com/item?id=24994522 | |
https://lwn.net/Articles/631631/ | |
https://amir.rachum.com/blog/2016/09/17/shared-libraries/ | |
https://www.toolchains.net/ | |
https://habr.com/ru/post/543622/ | |
Mach-O | |
https://lowlevelbits.org/parsing-mach-o-files/ | |
https://github.com/AlexDenisov/segment_dumper | |
https://github.com/AlexDenisov/bitcode_retriever | |
https://www.objc.io/issues/6-build-tools/mach-o-executables/ | |
https://sourceforge.net/p/machoview/code/ci/master/tree/ | |
https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CodeFootprint/Articles/MachOOverview.html | |
https://www.toolchains.net/ | |
https://github.com/aidansteele/osx-abi-macho-file-format-reference | |
https://github.com/euppal/machdump | |
https://justine.lol/ape.html | |
https://news.ycombinator.com/item?id=24256883 | |
https://news.ycombinator.com/item?id=26292166 | |
https://ahgamut.github.io/c/2021/02/27/ape-cosmo/ | |
https://habr.com/ru/company/macloud/blog/545278/ | |
https://www.toolchains.net/ | |
https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/ | |
https://docs.microsoft.com/en-us/cpp/build/reference/module-definition-dot-def-files?view=msvc-160 | |
WebAssembly | |
WebIDL | |
https://en.wikipedia.org/wiki/Web_IDL | |
https://heycam.github.io/webidl/ | |
https://webassembly.studio/ | |
http://webassembly.org/docs/binary-encoding/#high-level-structure | |
https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format | |
http://webassembly.org/docs/semantics/#32-bit-integer-operators | |
https://software.intel.com/en-us/articles/webassembly-an-initial-view | |
https://gist.github.com/skoppe/7617ceba6afd67b2e20c6be4f922725d | |
https://github.com/cosinus2/dlang-emscripten-demo | |
https://github.com/AndrewScheidecker/WAVM | |
https://gist.github.com/msimpson/cd7e9372be9b3cbf7ba89ce1439c9ee1 | |
https://hacks.mozilla.org/2018/01/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler/ | |
http://paul.bone.id.au/pub/pbone-2018-ast2wasm/ | |
http://wasabi.software-lab.org/ | |
https://medium.com/leaningtech/solving-the-structured-control-flow-problem-once-and-for-all-5123117b1ee2 | |
http://troubles.md/posts/wasm-is-not-a-stack-machine/ | |
http://troubles.md/posts/why-do-we-need-the-relooper-algorithm-again/ | |
http://troubles.md/posts/the-stack-is-not-the-stack/ | |
http://troubles.md/posts/microwasm/ | |
https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html | |
https://github.com/skoppe/spasm | |
https://github.com/skoppe/spasm-tradingview-example | |
https://github.com/skoppe/wasm-sourcemaps | |
https://github.com/skoppe/wasm-reader | |
https://www.youtube.com/watch?v=awe7swqFOOw | |
https://www.infoq.com/presentations/webassembly-compiler/ | |
https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html | |
http://cliffle.com/blog/bare-metal-wasm/ | |
https://wiki.alopex.li/ActuallyUsingWasm | |
https://wingolog.org/archives/2020/03/25/firefoxs-low-latency-webassembly-compiler | |
https://www.usenix.org/conference/usenixsecurity20/presentation/lehmann | |
https://old.reddit.com/r/ProgrammingLanguages/comments/icb9ve/everything_old_is_new_again_binary_security_of/ | |
https://ebiten.org/examples/ | |
https://github.com/aferust/drawee | |
http://troubles.md/lightbeam/ | |
https://v.trp.gr/posts/c-to-wasm-for-lazy-people/ | |
IR | |
SSA | |
https://blog.yossarian.net/2020/10/23/Understanding-static-single-assignment-forms | |
https://blog.yossarian.net/2020/09/19/LLVMs-getelementptr-by-example | |
https://www.zzzconsulting.se/2018/07/16/llvm-exercise.html | |
https://gforge.inria.fr/scm/viewvc.php/ssabook/book/ | |
https://github.com/pfalcon/ssabook | |
https://docs.julialang.org/en/v1/devdocs/ssair/index.html | |
https://github.com/JianpingZeng/xcc/blob/master/java/backend/transform/utils/PromoteMemToReg.java | |
https://sourceforge.net/p/mlton/mailman/message/31023809/ | |
https://github.com/bedatadriven/renjin-statet/blob/86cf1e34b352f0491ded6f8de1a5351f65d28be3/org.renjin.core/src/org/renjin/compiler/ir/ssa/SsaTransformer.java | |
https://github.com/libfirm/libfirm | |
https://gist.github.com/paniq/960c8836112b8bf58250f353da4b2aa2 | |
https://habr.com/ru/post/415771/ | |
https://github.com/golang/go/tree/master/src/cmd/compile/internal/ssa | |
https://github.com/golang/go/blob/master/src/cmd/compile/internal/ssa/gen/genericOps.go | |
https://twitter.com/Jonathan_Blow/status/1320084982891745283 | |
https://old.reddit.com/r/Compilers/comments/l4sqxr/ssa_ir_best_multivalue_design/ | |
https://old.reddit.com/r/Compilers/comments/lllhu5/question_asymptotic_complexity_of_scalar/ | |
https://old.reddit.com/r/Compilers/comments/nnrbof/ssa_is_for_scalars/ | |
https://c9x.me/notes/2017-02-09.html | |
https://old.reddit.com/r/Compilers/comments/5tq6mo/a_common_flaw_in_ssa_intermediate_representations/ | |
https://groups.google.com/g/comp.compilers/c/73kOI_S7r5A | |
https://old.reddit.com/r/Compilers/comments/ogtmqy/expression_rank_and_basic_block_structure/ | |
CPS | |
https://sourceforge.net/p/mlton/mailman/message/31023809/ | |
AST | |
https://twitter.com/andy_kelley/status/1355725154450436099 | |
https://github.com/ziglang/zig/pull/7920 | |
https://gist.github.com/pervognsen/1f0be4683b57207d1b53e10456b38b63 | |
Polyhedral | |
https://mlir.llvm.org/docs/Rationale/RationaleSimplifiedPolyhedralForm/ | |
https://polyhedral.info/ | |
http://cloog.org/ | |
https://gcc.gnu.org/wiki/Graphite | |
CFG / CFA | |
https://synthesis.to/2021/03/15/control_flow_analysis.html | |
https://eli.thegreenplace.net/2015/directed-graph-traversal-orderings-and-applications-to-data-flow-analysis/ | |
https://chrisseaton.com/truffleruby/basic-graal-graphs/ | |
https://old.reddit.com/r/Compilers/comments/og4kts/q_irreducible_control_flow_graph_in_current/ | |
https://www.npopov.com/2021/06/02/Design-issues-in-LLVM-IR.html | |
https://lobste.rs/s/wzo7fm/design_issues_llvm_ir | |
https://news.ycombinator.com/item?id=27430967 | |
https://groups.google.com/g/llvm-dev/c/NkslevE-MGM/m/XyyCW7sfAgAJ | |
https://www.codementor.io/erikeidt/conditional-logic-in-assembly-language-majw7ofjh | |
https://cs.lmu.edu/~ray/notes/ir/ | |
https://ijzerbaard.github.io/Direct-AST-to-ASM-translation/ | |
https://github.com/sampsyo/bril | |
https://github.com/rhysd/gocaml/tree/master/mir | |
https://github.com/bytecodealliance/wasmtime/blob/main/cranelift/docs/ir.md | |
https://habr.com/company/mailru/blog/358088/ | |
https://github.com/cretonne/cretonne | |
https://anydsl.github.io/Thorin | |
http://cs.lmu.edu/~ray/notes/ir/ | |
https://www.reddit.com/r/ProgrammingLanguages/comments/9z8qu3/a_new_compiler_backend_called_cranelift_uses/ | |
https://github.com/tensorflow/mlir/blob/master/g3doc/LangRef.md | |
https://mlir.llvm.org/docs/ | |
https://mlir.llvm.org/docs/Rationale/Rationale/ | |
https://github.com/eclipse/omr/blob/master/doc/compiler/il/IntroToTrees.md | |
https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/README.html | |
https://github.com/vnmakarov/mir/blob/master/MIR.md | |
https://blog.infosectcbr.com.au/2020/02/pointer-compression-in-v8.html | |
https://docs.google.com/document/d/10qh2-b4C5OtSg-xLwyZpEI5ZihVBPtn1xwKBbQC26yI/edit | |
https://www.youtube.com/watch?v=OWgWDx_gB1I | |
https://www.youtube.com/playlist?list=PLmYPUe8PWHKrc3arcxUPp2XosprqIb617 | |
https://chrisseaton.com/truffleruby/basic-truffle-graphs/ | |
http://users.uoa.gr/~sdi1600105/compilers/visualizing-dominators.html | |
https://tiarkrompf.github.io/notes/?/graph-ir/ | |
https://darksi.de/d.sea-of-nodes/ | |
https://blog.llvm.org/posts/2021-02-23-llvm-meets-code-property-graphs/ | |
https://www.llvm.org/devmtg/2017-06/1-Davis-Chisnall-LLVM-2017.pdf | |
http://nhaehnle.blogspot.com/2021/06/can-memcpy-be-implemented-in-llvm-ir.html | |
https://lists.llvm.org/pipermail/llvm-dev/2021-June/150883.html | |
https://old.reddit.com/r/Compilers/comments/ogtmqy/expression_rank_and_basic_block_structure/ | |
https://blog.yossarian.net/2021/07/19/LLVM-internals-part-1-bitcode-format | |
JIT | |
https://github.com/wdv4758h/awesome-jit | |
https://github.com/spencertipping/jit-tutorial | |
https://github.com/lukego/blog/issues | |
https://github.com/sanxiyn/blog/blob/master/posts/2020-01-03.md | |
https://github.com/apoch/epoch-language/wiki/Knowledge-Dump---Dynamic-Module-Loading-on-Windows | |
https://github.com/dibyendumajumdar/nanojit | |
https://github.com/dotnet/coreclr/blob/master/Documentation/botr/ryujit-tutorial.md | |
https://github.com/stoklund/cretonne | |
https://github.com/nbp/holyjit | |
https://github.com/dinfuehr/dora/blob/master/src/masm/x64.rs#L755 | |
https://github.com/zherczeg/sljit | |
https://github.com/raptorjit/raptorjit | |
https://github.com/Shopify/yjit | |
https://github.com/herumi/xbyak | |
https://github.com/MethodicalAcceleratorDesign/MADdocs/blob/master/luajit/luajit-doc.pdf | |
https://github.com/sysprog21/jitboy | |
-------------------- | |
https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/ | |
http://www.stephendiehl.com/llvm/ | |
http://nominolo.blogspot.com/2012/07/implementing-fast-interpreters.html | |
http://stackoverflow.com/questions/570257/jit-compilation-and-dep | |
https://habrahabr.ru/company/badoo/blog/321378/ | |
http://habrahabr.ru/company/spbau/blog/250841/ | |
http://www.dyncall.org/ | |
http://darksi.de/4.how-to-start-jitting/ | |
https://en.wikipedia.org/wiki/Foreign_function_interface | |
https://www.youtube.com/watch?v=EaLboOUG9VQ | |
http://mattwarren.org/2017/12/15/How-does-.NET-JIT-a-method-and-Tiered-Compilation/ | |
https://eli.thegreenplace.net/2013/11/05/how-to-jit-an-introduction/ | |
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Internals/Tracing_JIT | |
https://www.youtube.com/watch?v=oH4_unx8eJQ&feature=youtu.be | |
https://xmlandmore.blogspot.com/search/label/JIT%20Compiler | |
http://www.mikedrivendevelopment.com/2018/06/what-i-learned-making-my-own-jit.html | |
https://nullprogram.com/blog/2018/11/15/ | |
https://old.reddit.com/ | |
http://phrack.org/papers/jit_exploitation.html | |
https://developers.redhat.com/blog/2020/01/20/mir-a-lightweight-jit-compiler-project/ | |
https://abe-winter.github.io/2020/03/28/jitu-brutus.html | |
https://liveoverflow.com/just-in-time-compiler-in-javascriptcore-browser-0x03/ | |
https://mrale.ph/blog/2012/06/03/explaining-js-vms-in-js-inline-caches.html | |
http://lambda-the-ultimate.org/node/3851 | |
https://github.com/animetosho/jit_smc_test | |
https://news.ycombinator.com/item?id=23711449 | |
https://www.pcre.org/original/doc/html/pcrejit.html | |
https://carolchen.me/blog/jits-intro/ | |
https://carolchen.me/blog/jits-impls/ | |
https://hacks.mozilla.org/2017/02/a-crash-course-in-just-in-time-jit-compilers/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/hvs79e/tracing_jit_vs_method_jit_what_to_choose/ | |
https://cds.cern.ch/record/2692915?ln=en | |
https://blog.pyston.org/2016/06/30/baseline-jit-and-inline-caches/ | |
https://blog.pyston.org/2016/06/30/baseline-jit-and-inline-caches/ | |
https://bernsteinbear.com/blog/inline-caching/ | |
https://github.com/morganstanley/hobbes | |
http://www.cs.toronto.edu/~matz/dissertation/matzDissertation-latex2html/ | |
https://developers.redhat.com/blog/2021/04/27/the-mir-c-interpreter-and-just-in-time-jit-compiler/ | |
https://carolchen.me/blog/technical/jits-intro/ | |
https://carolchen.me/blog/technical/jits-impls/ | |
https://stackoverflow.com/questions/50902109/how-do-jit-compilers-stay-ahead-of-executing-machine-code | |
https://lists.llvm.org/pipermail/llvm-dev/2017-December/119472.html | |
https://v8.dev/blog/sparkplug | |
https://wingolog.org/archives/2013/04/18/inside-full-codegen-v8s-baseline-compiler | |
https://docs.google.com/document/d/13c-xXmFOMcpUQNqo66XWQt3u46TsBjXrHrh4c045l-A/edit | |
https://v8.dev/blog/short-builtin-calls | |
https://www.youtube.com/watch?v=vucLAqv7qpc | |
VM / Interpretation | |
https://craftinginterpreters.com/ | |
https://justinmeiners.github.io/lc3-vm/ | |
https://en.wikibooks.org/wiki/Creating_a_Virtual_Machine/Register_VM_in_C | |
https://badootech.badoo.com/home-grown-bytecode-interpreters-51e12d59b25c | |
https://the-ravi-programming-language.readthedocs.io/en/latest/lua-parser.html | |
https://old.reddit.com/r/programming/comments/badl2/luajit_2_beta_3_is_out_support_both_x32_x64/c0lrus0/ | |
https://pliniker.github.io/post/dispatchers/ | |
http://notes.eatonphil.com/interpreting-go.html | |
https://github.com/sanxiyn/blog/blob/master/posts/2019-10-13.md | |
https://stackoverflow.com/questions/164143/registers-vs-stacks | |
https://blog.infosectcbr.com.au/2020/02/pointer-compression-in-v8.html | |
https://docs.google.com/document/d/10qh2-b4C5OtSg-xLwyZpEI5ZihVBPtn1xwKBbQC26yI/edit | |
https://nikic.github.io/2012/02/02/Pointer-magic-for-efficient-dynamic-value-representations.html | |
http://wiki.luajit.org/Bytecode-2.0 | |
https://leonardschuetz.ch/blog/200908_nanboxing | |
https://github.com/facebook/hermes/blob/master/include/hermes/VM/HermesValue.h | |
https://eli.thegreenplace.net/2012/07/12/computed-goto-for-efficient-dispatch-tables | |
https://mrale.ph/blog/2012/06/03/explaining-js-vms-in-js-inline-caches.html | |
https://www.youtube.com/watch?v=xMzLbbOxTKo | |
https://stefan-marr.de/2020/06/efficient-and-safe-implementations-of-dynamic-languages/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/hh0fw9/need_help_understanding_selfoptimizing_ast/ | |
https://v8.dev/blog | |
https://v8.dev/blog/slack-tracking | |
http://www.complang.tuwien.ac.at/forth/threaded-code.html | |
http://www.complang.tuwien.ac.at/forth/threading/ | |
http://nominolo.blogspot.co.uk/2012/07/implementing-fast-interpreters.html | |
https://bernsteinbear.com/blog/inline-caching/ | |
CTFE | |
https://www.ralfj.de/blog/2018/07/19/const.html | |
https://www.youtube.com/watch?v=5Pm2C1YXrvM&app=desktop | |
https://forum.dlang.org/post/[email protected] | |
https://go.googlesource.com/proposal/+/master/design/15292/2010-06-type-functions.md | |
https://old.reddit.com/r/Jai/comments/i7oxzi/does_anyone_know_the_exact_specifications_of_jais/ | |
https://forum.dlang.org/thread/[email protected] | |
https://github.com/dart-lang/language/pull/1450/files#diff-fc1620a61d088a7cb71f51a00f584586b19979f3601a69cabb0829676d5e1a6e | |
https://www.cppstories.com/2021/constexpr-new-cpp20/ | |
DLL | |
http://www.ibm.com/developerworks/aix/library/au-aix-symbol-visibility/ | |
https://www.codeproject.com/tips/430684/loading-win-dlls-manually-without-loadlibrary | |
https://www.youtube.com/watch?v=JPQWQfDhICA | |
https://blogs.msdn.microsoft.com/oldnewthing/20140411-00/?p=1273 | |
http://devarea.com/linux-shared-libraries/ | |
https://github.com/wheybags/glibc_version_header | |
https://www.technovelty.org/linux/plt-and-got-the-key-to-code-sharing-and-dynamic-libraries.html | |
https://www.technovelty.org/c/position-independent-code-and-x86-64-libraries.html | |
https://stackoverflow.com/questions/1128150/win32-api-to-enumerate-dll-export-functions | |
https://stackoverflow.com/questions/2727020/what-is-the-use-of-exp-and-what-is-the-difference-between-lib-and-dll | |
https://www.wietzebeukema.nl/blog/hijacking-dlls-in-windows | |
GC | |
https://eschew.wordpress.com/2016/09/02/summarizing-gc/ | |
https://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/ | |
https://blog.plan99.net/modern-garbage-collection-part-2-1c88847abcfd | |
https://medium.com/@gtashnik11/conservative-vs-precise-gc-what-to-choose-318d069d994c | |
https://webkit.org/blog/7122/introducing-riptide-webkits-retreating-wavefront-concurrent-garbage-collector/ | |
https://github.com/nordlow/phobos-next/tree/master/benchmarks/gc-benchmark | |
LLVM | |
https://github.com/mjsabby/LLVMSharp | |
http://www.nuget.org/packages/LLVMSharp/3.8.0 | |
https://github.com/CRogers/LLVM-Windows-Binaries/blob/master/compiling.md | |
https://habrahabr.ru/company/solarsecurity/blog/317002/ | |
http://blog.regehr.org/archives/1453 | |
https://habrahabr.ru/post/338420/ | |
https://mapping-high-level-constructs-to-llvm-ir.readthedocs.io/en/latest/ | |
https://habr.com/ru/post/474460/ | |
https://mukulrathi.co.uk/create-your-own-programming-language/llvm-ir-cpp-api-tutorial/ | |
https://old.reddit.com/r/programming/comments/kjjijf/a_complete_guide_to_llvm_for_programming_language/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/kjuh0b/llvm_tutorial/ | |
https://lists.llvm.org/pipermail/llvm-dev/2021-June/151199.html | |
https://www.youtube.com/watch?v=Vg5HCzHE0GA | |
https://blog.yossarian.net/2021/07/19/LLVM-internals-part-1-bitcode-format | |
Linker | |
https://www.airs.com/blog/archives/38 | |
http://becbapatla.ac.in/cse/naveenv/docs/LL1.pdf | |
http://www.lurklurk.org/linkers/linkers.html | |
https://habrahabr.ru/post/150327/ | |
https://llvm.org/docs/PDB/index.html | |
https://github.com/dishather/richprint | |
https://www.youtube.com/watch?v=p9nH2vZ2mNo&feature=youtu.be&t=5m40s | |
https://github.com/yebblies/ylink | |
https://docs.google.com/document/d/1D13QhciikbdLtaI67U6Ble5d_1nsI4befEd6_k1z91U/preview | |
https://forum.dlang.org/post/[email protected] | |
https://forum.dlang.org/post/[email protected] | |
http://orangejuiceliberationfront.com/how-to-write-a-compiler/ | |
https://drewdevault.com/dynlib.html | |
https://lobste.rs/s/xvqqvy/dynamic_linking | |
https://news.ycombinator.com/item?id=23654353 | |
https://github.com/ldc-developers/ldc/pull/3600 | |
https://github.com/rui314/mold | |
https://amir.rachum.com/blog/2016/09/17/shared-libraries/ | |
https://blog.thea.codes/the-most-thoroughly-commented-linker-script/ | |
https://github.com/theacodes/Winterbloom_Castor_and_Pollux/blob/master/firmware/scripts/samd21g18a.ld | |
https://old.reddit.com/r/programming/comments/kwzllc/the_most_thoroughly_commented_linker_script/ | |
https://www.toolchains.net/ | |
https://gankra.github.io/blah/swift-abi/ | |
https://news.ycombinator.com/item?id=26205969 | |
https://eli.thegreenplace.net/2013/07/09/library-order-in-static-linking | |
https://briancallahan.net/blog/20210609.html | |
https://old.reddit.com/r/ProgrammingLanguages/comments/o1wriy/name_mangling_alternative/ | |
CRT / LIBC | |
musl | |
http://www.musl-libc.org/ | |
https://dustri.org/b/security-features-of-musl.html | |
http://www.malsmith.net/minicrt/ | |
https://www.uclibc.org/ | |
http://www.sourceware.org/newlib/ | |
https://www.fefe.de/dietlibc/ | |
https://handmade.network/wiki/2824-tutorial_how_to_avoid_c_c++_runtime_on_windows | |
https://github.com/ispc/ispc/issues/542 | |
https://github.com/aligrudi/neatlibc | |
https://github.com/dragon-lang/mar | |
https://support.microsoft.com/en-us/help/94248/how-to-use-the-c-run-time | |
http://dbp-consulting.com/tutorials/debugging/linuxProgramStartup.html | |
https://gcc.gnu.org/onlinedocs/gccint/Initialization.html | |
https://news.ycombinator.com/item?id=25556286 | |
https://old.reddit.com/r/programming/comments/nehcju/release_cosmopolitan_v10_cosmopolitan_libc_makes/ | |
https://github.com/jart/cosmopolitan | |
Books/Articles | |
https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/ | |
http://c9x.me/compile/bib/ | |
https://www.tutorialspoint.com/compiler_design/index.htm | |
http://www.lighterra.com/papers/graphcoloring/ | |
https://www.youtube.com/watch?v=UHv_Jog9Xuc | |
https://xmonader.github.io/letsbuildacompiler-pretty/ | |
https://blog.felixangell.com/compilers-brief-and-brisk | |
https://habr.com/ru/company/mailru/blog/451894/ | |
https://nicoleorchard.com/blog/compilers | |
https://legacy.cs.indiana.edu/~dyb/pubs.html | |
Optimization | |
Arithmetic | |
https://saml98.github.io/jekyll/update/2020/02/21/weird-division.html | |
https://old.reddit.com/r/Compilers/comments/lptsxo/another_post_on_division_by_a_constant/ | |
Vectorization / SIMD | |
https://github.com/google/pik/tree/master/simd | |
https://gitlab.mpcdf.mpg.de/bbramas/inastemp | |
https://easyperf.net/blog/2017/10/24/Vectorization_part1 | |
https://github.com/mitsuba-renderer/enoki | |
http://cliffle.com/p/dangerust/6/ | |
https://opensourceweekly.org/issues/7/ | |
https://dl.acm.org/doi/10.1145/3445814.3446692 | |
https://github.com/ychen306/vegenbench | |
Register allocation | |
http://pages.cs.wisc.edu/~horwitz/CS701-NOTES/5.REGISTER-ALLOCATION.html | |
http://www.lighterra.com/papers/graphcoloring/ | |
https://hassamuddin.com/blog/reg-alloc/ | |
https://en.wikipedia.org/wiki/Sethi%E2%80%93Ullman_algorithm | |
https://stackoverflow.com/questions/1960888/register-allocation-and-spilling-the-easy-way | |
http://blog.llvm.org/2011/09/greedy-register-allocation-in-llvm-30.html | |
https://stackoverflow.com/questions/23793366/simple-register-allocation-scheme-for-x86#23899765 | |
https://github.com/dotnet/coreclr/blob/ca80b27fbb258c835116a7835aee520f3d659de2/Documentation/design-docs/lsra-detail.md | |
https://github.com/indutny/linearscan.rs | |
https://www.youtube.com/watch?v=IK8TMJf3G6U | |
https://brrt-to-the-future.blogspot.com/2019/03/reverse-linear-scan-allocation-is.html | |
https://chinbilly.blogspot.com/2016/10/information-about-luajit.html | |
https://github.com/nael8r/How-To-Write-An-LLVM-Register-Allocator/blob/master/HowToWriteAnLLVMRegisterAllocator.rst | |
https://github.com/bnjbvr/regalloc.rs | |
https://github.com/dibyendumajumdar/nanojit/blob/master/docs/overview.md#regalloc | |
https://github.com/dibyendumajumdar/nanojit/blob/master/nanojit/RegAlloc.h | |
https://github.com/dibyendumajumdar/nanojit/blob/master/nanojit/RegAlloc.cpp | |
https://github.com/dibyendumajumdar/nanojit/blob/master/nanojit/Assembler.cpp | |
https://github.com/llvm/llvm-project/blob/master/llvm/lib/CodeGen/RegAllocFast.cpp | |
https://old.reddit.com/r/Compilers/comments/jttre3/register_allocation_algorithm_help/ | |
https://github.com/rochus-keller/LjTools/blob/0f3b4fe6edf2cbfeb4ec0f602feecd0a112f5088/LuaJitComposer.cpp#L780 | |
https://github.com/rochus-keller/Oberon/blob/01a9213d4793d88754774a30e089ee869e1e0260/ObLjbcGen.cpp#L764 | |
https://old.reddit.com/r/Compilers/comments/edgx5s/successors_to_iburg/ | |
https://lambda.uta.edu/cse5317/spring01/notes/node37.html | |
https://cfallin.org/blog/2021/03/15/cranelift-isel-3/ | |
https://github.com/bytecodealliance/regalloc.rs | |
https://github.com/jstnlef/zebu-vm/tree/master/src/compiler/backend/reg_alloc | |
https://old.reddit.com/r/ProgrammingLanguages/comments/m87hv8/register_allocation_without_ssa_form/ | |
Inlining | |
https://devblogs.microsoft.com/cppblog/inlining-decisions-in-visual-studio/ | |
https://devblogs.microsoft.com/cppblog/c-inliner-improvements-the-zipliner/ | |
https://collincode.wordpress.com/2016/07/19/john-carmack-on-inlined-code/ | |
https://web.archive.org/web/20200103165532/http://number-none.com/blow/john_carmack_on_inlined_code.html | |
https://egorbo.com/how-inlining-works.html | |
https://awesomekling.github.io/Smarter-C++-inlining-with-attribute-flatten/ | |
https://blog.tartanllama.xyz/inline-hints/ | |
https://github.com/golang/go/issues/17566 | |
https://forum.dlang.org/thread/[email protected] | |
https://gitlab.anu.edu.au/mu/mu-impl-fast/-/blob/master/src/compiler/passes/inlining.rs#L89 | |
https://t.co/6pZfdA9QB5?amp=1 | |
https://hacks.mozilla.org/2020/11/warp-improved-js-performance-in-firefox-83/ | |
https://searchfox.org/mozilla-central/rev/cecdac0aa5733fee515a166b6e31e38cc58abf32/js/src/jit/TrialInlining.cpp#504 | |
https://era.library.ualberta.ca/items/a1d821c8-6965-4f5f-9238-7dfc34059912 | |
https://t.co/LOHnI8cc1L?amp=1 | |
https://dzone.com/articles/jit-inlining | |
https://docs.google.com/document/d/1VoYBhpDhJC4VlqMXCKvae-8IGuheBGxy32EOgC2LnT8/edit | |
https://guenchi.github.io/Scheme/doc/Fast%20and%20Effective%20Procedure%20Inlining.pdf | |
https://wingolog.org/archives/2021/05/13/cross-module-inlining-in-guile | |
http://www.cs.cmu.edu/afs/cs/academic/class/15745-s07/www/papers/hazelwood-cgo03.pdf | |
https://matklad.github.io//2021/07/09/inline-in-rust.html | |
https://matklad.github.io/2021/07/10/its-not-always-icache.html | |
x86 | |
https://travisdowns.github.io/blog/2020/01/17/avxfreq1.html#summary | |
https://stackoverflow.com/questions/27804852/assembly-rep-movs-mechanism | |
https://stackoverflow.com/questions/33902068/what-setup-does-rep-do/33905887#33905887 | |
https://stackoverflow.com/questions/43343231/enhanced-rep-movsb-for-memcpy | |
https://www.phoronix.com/scan.php?page=news_item&px=Intel-5.6-FSRM-Memmove | |
Peephole | |
https://egorbo.com/peephole-optimizations.html | |
https://github.com/jubitaneja/cranelift-peepholes/blob/master/discuss.txt | |
CSE | |
https://github.com/jazz-lang/Waffle/blob/master/src/bytecompiler/strength_reduction.rs#L202 | |
Alias analisys | |
https://arxiv.org/abs/2006.01491 | |
https://gist.github.com/shafik/848ae25ee209f698763cffee272a58f8 | |
https://blog.tartanllama.xyz/llvm-alias-analysis/ | |
https://blogs.unity3d.com/2020/09/07/enhanced-aliasing-with-burst/ | |
https://vod.video.cornell.edu/media/1_7ngps985 | |
https://www.youtube.com/watch?v=128PILfkEWg | |
https://llvm.org/docs/LangRef.html#tbaa-metadata | |
https://www.youtube.com/watch?v=gxt-uCu7Sxo&t=0s | |
https://lists.llvm.org/pipermail/llvm-dev/2021-June/151199.html | |
https://nhaehnle.blogspot.com/2021/06/can-memcpy-be-implemented-in-llvm-ir.html | |
https://old.reddit.com/r/programming/comments/nxm6j2/can_memcpy_be_implemented_in_llvm_ir/ | |
https://www.ralfj.de/blog/2020/12/14/provenance.html | |
https://news.ycombinator.com/item?id=25419740 | |
https://blog.regehr.org/archives/1307 | |
https://news.ycombinator.com/item?id=11288665 | |
https://developers.redhat.com/blog/2020/06/02/the-joys-and-perils-of-c-and-c-aliasing-part-1 | |
https://developers.redhat.com/blog/2020/06/03/the-joys-and-perils-of-aliasing-in-c-and-c-part-2 | |
https://www.youtube.com/watch?v=ZgZ4_2YwtDQ | |
SRoA | |
https://news.ycombinator.com/item?id=23712058 | |
https://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2020-June/038779.html | |
https://fosdem.org/2020/schedule/event/reducing_gc_times/ | |
https://www.youtube.com/watch?v=LBn-0jYKLb8 | |
https://gcc.gnu.org/wiki/cauldron2019talks?action=AttachFile&do=view&target=mjambor-cauldron-ipa-sra.pdf | |
Inter procedural | |
https://www.youtube.com/watch?v=LBn-0jYKLb8 | |
https://news.ycombinator.com/item?id=24437459 | |
https://lists.llvm.org/pipermail/llvm-dev/2020-August/144012.html | |
DFA | |
https://lists.llvm.org/pipermail/cfe-dev/2020-October/066937.html | |
Value Range Propagation | |
https://www.drdobbs.com/tools/value-range-propagation/229300211 | |
https://hellthom.wordpress.com/2015/06/12/nir-and-value-range-propagation/ | |
TCO | |
https://blog.reverberate.org/2021/04/21/musttail-efficient-interpreters.html | |
https://jfmengels.net/tail-call-optimization/ | |
https://lobste.rs/s/6o3n3t/tail_call_optimization_elm | |
Scalar | |
https://habr.com/ru/post/550900/ | |
Copy elision | |
https://quuxplusone.github.io/blog/2021/03/07/copy-elision-borks-escape-analysis/ | |
Validation | |
https://web.ist.utl.pt/nuno.lopes/pubs.php?id=alive2-mem-cav21 | |
Escape analysis | |
https://carolchen.me/blog/technical/escape-analysis/ | |
https://www.aosabook.org/en/llvm.html | |
http://duriansoftware.com/joe/Optimizing-global-constant-data-structures-using-relative-references.html | |
http://wiki.luajit.org/Optimizations | |
https://tratt.net/laurie/blog/entries/what_challenges_and_trade_offs_do_optimising_compilers_face.html | |
https://www.youtube.com/watch?v=FnGCDLhaxKU | |
https://twitter.com/dendibakh | |
http://cliffle.com/p/dangerust/6/ | |
https://kristerw.blogspot.se/2018/01/gcc-back-end-performance-tuning.html | |
https://stackoverflow.com/questions/40354978/why-is-this-c-code-faster-than-my-hand-written-assembly-for-testing-the-collat | |
https://github.com/facebookincubator/BOLT | |
https://habr.com/post/415771/ | |
https://github.com/golang/go/tree/master/src/cmd/compile/internal/ssa | |
https://blog.regehr.org/archives/1603 | |
https://forum.dlang.org/thread/[email protected] | |
https://downloads.haskell.org/~ghc/7.0.1/docs/html/users_guide/rewrite-rules.html | |
https://blogs.msdn.microsoft.com/vcblog/2017/12/03/msvc-code-optimizer-improvements-in-visual-studio-2017-versions-15-5-and-15-3/ | |
https://github.com/google/souper | |
http://stoke.stanford.edu/ | |
https://lemire.me/blog/2019/02/08/faster-remainders-when-the-divisor-is-a-constant-beating-compilers-and-libdivide/ | |
https://rpython.readthedocs.io/en/latest/jit/optimizer.html | |
https://nfrechette.github.io/2019/05/08/sign_flip_optimization/ | |
https://habr.com/ru/post/458150/ | |
https://egorbo.com/peephole-optimizations.html | |
https://old.reddit.com/r/Compilers/comments/cjy7pv/c_performance_benchmarks_release_13/ | |
https://nfrechette.github.io/2019/10/22/float_xor_optimization/ | |
http://www.lihaoyi.com/post/HowanOptimizingCompilerWorks.html | |
https://habr.com/ru/company/jugru/blog/485024/ | |
https://medium.com/graalvm/under-the-hood-of-graalvm-jit-optimizations-d6e931394797 | |
https://blog.nelhage.com/post/why-sorbet-is-fast/ | |
https://www.youtube.com/watch?v=43X9ia-qpds | |
https://lemire.me/blog/2020/06/04/the-go-compiler-needs-to-be-smarter/ | |
https://news.ycombinator.com/item?id=23423755 | |
https://hassamuddin.com/blog/kosaraju/ | |
https://gitlab.com/chriscox/CppPerformanceBenchmarks | |
https://old.reddit.com/r/ProgrammingLanguages/comments/i4sktf/if_all_compiled_languages_compile_to_machine_code/ | |
https://gitlab.com/chriscox/CppPerformanceBenchmarks | |
http://users.uoa.gr/~sdi1600105/compilers/introduction-to-scalar-evolution.html | |
http://users.uoa.gr/~sdi1600105/compilers/loop-to-constant-computation.html | |
https://github.com/baziotis/compiler-optimization | |
https://github.com/facebookresearch/CompilerGym | |
https://www.linaro.org/blog/reducing-code-size-with-llvm-machine-outliner-on-32-bit-arm-targets/ | |
https://webkit.org/blog/10308/speculation-in-javascriptcore/ | |
http://mlton.org/Contify | |
https://www.cs.rit.edu/~mtf/research/contification/ | |
https://old.reddit.com/r/Compilers/comments/oi3ldf/overview_and_challenges_with_interprocedural/ | |
Formal verification | |
https://infohost.nmt.edu/%7Eal/cseet-paper.html | |
about:blank | |
https://github.com/Whiley/WhileyCompiler | |
https://github.com/FStarLang/FStar | |
https://github.com/seahorn/crab-llvm | |
https://github.com/NASA-SW-VnV/ikos | |
https://forum.dlang.org/post/[email protected] | |
https://lobste.rs/s/v6hkiz/zz_is_modern_formally_provable_dialect_c | |
https://github.com/aep/zz | |
https://hexgolems.com/2020/04/incorrectness-logic-by-example/ | |
http://pling.jondgoodwin.com/post/weakening-cycles/ | |
https://github.com/AliveToolkit/alive2 | |
https://t.co/9p3GnjLHsK?amp=1 | |
https://johnwickerson.wordpress.com/2021/06/09/c4/ | |
compiler testing | |
Benchmarks | |
https://programming-language-benchmarks.vercel.app/ | |
https://github.com/Mark-Kovalyov/CardRaytracerBenchmark | |
https://github.com/sampsyo/bril/tree/master/benchmarks | |
-------------------- | |
https://github.com/lvandeve/lodepng | |
https://github.com/kornelski/lodepng-rust | |
https://github.com/r-lyeh-archived/scriptorium | |
https://embark.status.im/news/2019/11/18/nim-vs-crystal-part-1-performance-interoperability/index.html | |
https://github.com/kostya/benchmarks | |
http://macias.info/entry/201912201300_graal_aot.md | |
https://christine.website/blog/v-vvork-in-progress-2020-01-03 | |
https://ecraven.github.io/r7rs-benchmarks/ | |
https://blog.nelhage.com/post/why-sorbet-is-fast/ | |
https://drewdevault.com/2020/01/04/Slow.html#tests | |
https://www.techempower.com/benchmarks/#section=test&runid=350f0783-cc9b-4259-9831-28987799782a&hw=ph&test=plaintext | |
https://dlang.org/blog/2020/05/14/lomutos-comeback/ | |
https://github.com/ziglang/gotta-go-fast | |
https://github.com/nordlow/compiler-benchmark | |
https://old.reddit.com/r/Compilers/comments/kre49d/compiler_speed_tests/ | |
https://github.com/sal55/langs/blob/master/Compilertest2.md | |
https://github.com/sal55/langs/blob/master/Compilertest3.md | |
https://old.reddit.com/r/Compilers/comments/llujxv/luajit_performance/ | |
https://github.com/vnmakarov/mir/tree/master/c-benchmarks | |
Tests | |
https://github.com/SDC-Developers/SDC/tree/master/test/runner | |
Fuzzing | |
https://blog.trailofbits.com/2021/03/23/a-year-in-the-life-of-a-compiler-fuzzing-campaign/ | |
https://github.com/agroce/afl-compiler-fuzzer | |
https://blog.regehr.org/archives/1039 | |
http://www.vegardno.net/2018/06/compiler-fuzzing.html | |
https://www.fuzzingbook.org/html/Grammars.html | |
https://github.com/BBasile/fuzzed | |
https://h0mbre.github.io/Fuzzing-Like-A-Caveman-5/# | |
https://gamozolabs.github.io/2020/08/11/some_fuzzing_thoughts.html | |
https://gamozolabs.github.io/ | |
Reducing | |
https://linki.tools/2020/02/creduce-it-s-a-kind-of-magic.html | |
https://habr.com/ru/post/482634/ | |
https://nickdesaulniers.github.io/blog/2019/01/18/finding-compiler-bugs-with-c-reduce/ | |
https://comby.dev/blog/2021/03/26/comby-reducer | |
https://www.youtube.com/watch?v=_KrZzaShDew | |
http://the-witness.net/news/2018/03/testing-the-jai-compiler/ | |
https://dspace.jaist.ac.jp/dspace/bitstream/10119/9639/5/paper.pdf | |
https://habr.com/post/428421/ | |
https://salsa.debian.org/benchmarksgame-team/benchmarksgame/blob/master/README.md | |
https://gopiandcode.uk/logs/log-certified-synthesis.html | |
Errors | |
Exceptions | |
https://www.codeproject.com/Articles/2126/How-a-C-compiler-implements-exception-handling | |
https://nim-lang.org/araq/quirky_exceptions.html | |
https://old.reddit.com/r/Compilers/comments/oin0xo/how_to_implement_exception_handling/ | |
https://www.youtube.com/watch?v=eQcRcgOnl9o | |
https://www.youtube.com/watch?v=uF0fSZL8Ceg | |
https://github.com/brendanzab/codespan | |
https://github.com/fennecdjay/libprettyerr | |
https://github.com/QazmoQwerty/error-reporter | |
https://elm-lang.org/news/compiler-errors-for-humans | |
http://openjdk.java.net/jeps/286 | |
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html | |
https://out.reddit.com/t3_8nr3x7?url=http%3A%2F%2Fwww.open-std.org%2Fjtc1%2Fsc22%2Fwg21%2Fdocs%2Fpapers%2F2018%2Fp0709r0.pdf&token=AQAAmqARW4TXprWrH-zqq-zSTxeJZmRuEoPsaB2OesWrAWfDcTgK&app_name=reddit.com | |
https://swift.org/blog/new-diagnostic-arch-overview/ | |
https://elm-lang.org/news/the-syntax-cliff | |
https://internals.rust-lang.org/t/pre-rfc-nicer-types-in-diagnostics/11139 | |
https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html | |
https://github.com/CurtisFenner/curtisfenner.github.io/blob/master/blog.note/2021/03/errors.md | |
Debugging / debug info | |
PDB | |
https://github.com/microsoft/microsoft-pdb | |
http://llvm.org/docs/PDB/index.html | |
https://github.com/willglynn/pdb | |
https://github.com/smx-smx/PDBSharp | |
https://github.com/horsicq/PDBRipper | |
https://github.com/moyix/pdbparse | |
https://code.google.com/archive/p/pdbparse/wikis/StreamDescriptions.wiki | |
http://www.godevtool.com/Other/pdb.htm | |
https://github.com/apoch/epoch-language/wiki/Knowledge-Dump---Debugging-Epoch-Programs | |
http://llvm.org/docs/PDB/CodeViewTypes.html#lf-padn-0xf0-n | |
https://github.com/rainers/cv2pdb | |
https://habr.com/ru/post/507124/ | |
https://www.youtube.com/watch?v=5twzd06NqGU | |
https://llvm.org/devmtg/2016-11/Slides/Kleckner-CodeViewInLLVM.pdf | |
https://forum.dlang.org/post/[email protected] | |
DWARF | |
https://www.youtube.com/watch?v=PESekIIvHSU | |
JIT | |
https://sourceware.org/gdb/current/onlinedocs/gdb/JIT-Interface.html | |
https://llvm.org/docs/DebuggingJITedCode.html | |
https://www.corsix.org/content/libunwind-dynamic-code-x86-64 | |
Plugin | |
https://docs.microsoft.com/en-us/visualstudio/extensibility/debugger/visual-studio-debugger-extensibility?view=vs-2019 | |
https://docs.microsoft.com/en-us/visualstudio/extensibility/debugger/symbol-provider?view=vs-2019 | |
Stack trace | |
https://github.com/yazd/backtrace-d | |
https://llvm.org/docs/SourceLevelDebugging.html | |
https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/enhancing-debugging-with-the-debugger-display-attributes | |
https://lekstu.ga/posts/pclntab-function-recovery/ | |
https://mercurylang.org/information/doc-release/mercury_user_guide/Declarative-debugging.html | |
http://hackerfoo.com/presentations/design_to_debug.html | |
https://github.com/radareorg/cutter | |
https://microsoft.github.io/debug-adapter-protocol/ | |
https://www.youtube.com/watch?v=dAVNF1TMbOw | |
https://www.youtube.com/watch?v=wCllU4YkxBk | |
https://belkadan.com/blog/2020/09/Swift-Runtime-Type-Layout/ | |
https://twitter.com/ID_AA_Carmack/status/1338003054004752385 | |
https://sourceware.org/elfutils/Debuginfod.html | |
https://www.youtube.com/watch?v=y5-YL_i6JNg | |
Scopes | |
http://willcrichton.net/notes/specificity-programming-languages/ | |
http://semantic-domain.blogspot.com/2015/03/abstract-binding-trees.html | |
https://www.stephanboyer.com/post/124/formalizing-dynamic-scoping | |
Types | |
https://en.wikipedia.org/wiki/Natural_deduction | |
https://mitpress.mit.edu/books/types-and-programming-languages | |
https://blog.systems.ethz.ch/blog/2018/a-hammer-you-can-only-hold-by-the-handle.html | |
https://medium.com/@joakim.ahnfelt/type-inference-by-example-793d83f98382 | |
https://medium.com/@joakim.ahnfelt/type-inference-by-example-part-2-46933a75a116 | |
https://medium.com/@joakim.ahnfelt/type-inference-by-example-part-3-e9e2c27f1fb2 | |
https://medium.com/@joakim.ahnfelt/type-inference-by-example-part-4-3aaca6400c7e | |
https://medium.com/@joakim.ahnfelt/type-inference-by-example-part-5-25d7a7c66ca6 | |
https://belkadan.com/blog/2020/09/Swift-Runtime-Type-Layout/ | |
https://tiarkrompf.github.io/notes/?/dependent-types/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/mjcbj5/are_there_any_programming_languages_that_do/ | |
https://clang.llvm.org/docs/InternalsManual.html#the-type-class-and-its-subclasses | |
https://stackoverflow.com/questions/25231080/what-are-canonical-types-in-clang | |
https://old.reddit.com/r/ProgrammingLanguages/comments/o3jodx/how_can_i_dynamically_link_a_library_without/ | |
Cross-compilation | |
https://dev.to/kristoff_it/zig-makes-go-cross-compilation-just-work-29ho | |
Hot reloading | |
https://habr.com/ru/post/435260/ | |
https://habr.com/ru/post/437312/ | |
https://github.com/RuntimeCompiledCPlusPlus/RuntimeCompiledCPlusPlus | |
https://www.enkisoftware.com/devlogpost-20200202-1-Runtime-Compiled-C++-Dear-ImGui-and-DirectX11-Tutorial | |
https://mun-lang.org/blog/2020/05/01/memory-mapping/ | |
https://github.com/mun-lang/mun | |
https://github.com/SrMordred/reloaded | |
Incremental compilation | |
http://smallcultfollowing.com/babysteps/blog/2019/01/29/salsa-incremental-recompilation/ | |
https://www.youtube.com/watch?v=_muY4HjSqVw | |
https://gist.github.com/nikomatsakis/0bd497f157a40776216f37d8bbec25cd | |
https://www.youtube.com/watch?v=i_IhACacPRY | |
https://gist.github.com/nikomatsakis/5b119a71465549b61743e8739a369b5e | |
https://www.youtube.com/watch?v=Jes3bD6P0To | |
https://ollef.github.io/blog/posts/query-based-compilers.html | |
https://www.youtube.com/watch?v=N6b44kMS6OM | |
http://www.umut-acar.org/self-adjusting-computation | |
https://news.ycombinator.com/item?id=23644391 | |
https://rust-analyzer.github.io/blog/2020/07/20/three-architectures-for-responsive-ide.html | |
https://github.com/ziglang/zig/issues/5963 | |
https://www.youtube.com/watch?v=R5FKgi9BYyU | |
https://twitter.com/cmuratori/status/1355273205720641538 | |
https://kristoff.it/blog/zig-new-relationship-llvm/#in-place-binary-patching | |
https://kristoff.it/blog/zig-new-relationship-llvm/#designing-machine-code-for-incremental-compilation | |
LSP / Editors / Analyser | |
https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/architecture.md | |
https://old.reddit.com/r/ProgrammingLanguages/comments/lz8skk/language_server_built_into_the_compiler/ | |
https://github.com/sublimelsp/LSP | |
https://github.com/Pure-D/serve-d | |
https://evanw.github.io/source-map-visualization/ | |
https://habr.com/ru/company/JetBrains/blog/551476/ | |
https://medium.com/ballerina-techblog/implementing-a-language-server-how-hard-can-it-be-part-1-introduction-c915d2437076 | |
https://old.reddit.com/r/ProgrammingLanguages/comments/n3yrra/advicebest_practicearhitecture_pattern_for/ | |
Conditional compilation | |
https://wiki.dlang.org/DIP31 | |
Fast compilation | |
https://aras-p.info/blog/2017/10/23/Best-unknown-MSVC-flag-d2cgsummary/ | |
https://news.ycombinator.com/item?id=23137345 | |
https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html | |
https://github.com/nordlow/compiler-benchmark | |
http://dpldocs.info/this-week-in-d/Blog.Posted_2021_02_08.html#adam%27s-thoughts-on-mental-friction | |
Tools | |
https://onlinedisassembler.com/odaweb/ | |
http://uncrustify.sourceforge.net/ | |
https://www.youtube.com/watch?v=lubc8udiP_8 | |
https://twitter.com/DionSystems/status/1315706504520044544 | |
https://twitter.com/Viladoman/status/1320867718808166402 | |
https://github.com/github/semantic | |
https://github.com/engineer-man/piston | |
SPIR-V | |
https://boxbase.org/entries/2017/oct/2/spirv-target/ | |
https://boxbase.org/entries/2017/oct/2/spirv-target/ | |
https://github.com/EmbarkStudios/rust-gpu/ | |
https://xol.io/blah/the-trouble-with-spirv/ | |
Functional | |
https://danilafe.com/blog/00_compiler_intro/ | |
https://blog.sigplan.org/2019/12/30/defunctionalization-everybody-does-it-nobody-talks-about-it/ | |
http://matt.might.net/articles/ | |
https://old.reddit.com/r/ProgrammingLanguages/comments/ojt2ld/llvm_for_functional_languages_supporting/ | |
https://compilers.cs.uni-saarland.de/papers/lkh15_cgo.pdf | |
Floats | |
https://forum.dlang.org/thread/[email protected] | |
https://stackoverflow.com/questions/34320886/what-does-this-x86-assembly-instruction-do-addsd-xmm0-ds-xmm41f000000000000 | |
https://exceptionshub.com/32-bit-to-16-bit-floating-point-conversion.html | |
Headers / Bindings | |
https://floooh.github.io/2020/08/23/sokol-bindgen.html | |
https://github.com/microsoft/win32metadata | |
https://forum.dlang.org/thread/[email protected] | |
https://github.com/marlersoft/win32json | |
https://github.com/marlersoft/win32jsongen | |
https://github.com/rumbu13/windows-d | |
https://forum.dlang.org/post/[email protected] | |
Coverage | |
https://forum.dlang.org/thread/[email protected] | |
Pass management | |
https://blog.llvm.org/posts/2021-03-26-the-new-pass-manager/ | |
https://blogs.msdn.microsoft.com/ericlippert/2010/02/04/how-many-passes/ | |
REPL | |
https://people.eecs.berkeley.edu/~brock/blog/reple.php | |
https://craftinginterpreters.com/ | |
https://sunfishcode.github.io/blog/2018/10/22/Canonicalization.html | |
https://www.spinellis.gr/blog/20060626/ | |
https://www.cs.cornell.edu/courses/cs6120/2019fa/blog/ | |
http://darksi.de/d.sea-of-nodes/ | |
http://re2c.org/index.html | |
https://wiki.dlang.org/DMD_Source_Guide | |
https://norasandler.com/2018/06/27/Write-a-Compiler-9.html | |
https://blog.acolyer.org/2018/01/26/a-practitioners-guide-to-reading-programming-languages-papers/ | |
https://researcher.watson.ibm.com/researcher/view_group_pubs.php?grp=214 | |
https://www.youtube.com/watch?v=NbHYLAro02M | |
https://www.youtube.com/watch?v=7HKbjYqqPPQ | |
https://www.youtube.com/watch?v=AFaIP-dF-RA | |
https://jonathan2251.github.io/lbd/ | |
http://web.cs.wpi.edu/~kal/PLT/ | |
https://news.ycombinator.com/item?id=11555527 | |
http://agner.org/optimize/ | |
http://habrahabr.ru/company/intel/blog/261665/ | |
http://habrahabr.ru/post/216449/ | |
http://dklab.ru/chicken/nablas/10.html | |
http://www.dreamincode.net/forums/topic/260592-an-introduction-to-compiler-design-part-i-lexical-analysis/ | |
http://stackoverflow.com/questions/1669/learning-to-write-a-compiler | |
http://stackoverflow.com/questions/2349468/starting-off-a-simple-the-simplest-perhaps-c-compiler | |
http://cnuinfotech-cd.blogspot.com/ | |
http://habrahabr.ru/post/170735/ | |
http://www.altdevblogaday.com/2011/07/19/auto-vectorization-for-the-masses-part-4-of-n-optimization/ | |
http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm | |
http://habrahabr.ru/post/201774/ | |
http://habrahabr.ru/post/197474/ | |
http://habrahabr.ru/post/208006/ | |
http://habrahabr.ru/company/intel/blog/208908/ | |
http://habrahabr.ru/post/209128/ | |
http://bford.info/packrat/ | |
http://www.amazon.com/Language-Implementation-Patterns-Domain-Specific-Programming/dp/193435645X | |
http://gcc.gnu.org/onlinedocs/cpp/index.html#Top | |
http://habrahabr.ru/post/213225/ | |
http://andreinc.net/2010/10/05/converting-infix-to-rpn-shunting-yard-algorithm/ | |
https://github.com/bmars/shunting-yard | |
http://en.wikipedia.org/wiki/Incremental_compiler#Definition | |
http://dotnet.jku.at/applications/visualizer/ | |
http://habrahabr.ru/post/231657/ | |
http://www.wilfred.me.uk/blog/2014/08/27/baby-steps-to-a-c-compiler/ | |
http://habrahabr.ru/company/intel/blog/238091/ | |
http://h14s.p5r.org/2014/10/shiftreduce-expression-parsing-by-douglas-gregor.html | |
http://repo.or.cz/w/neatcc.git | |
http://ducklang.org/designing-a-programming-language-i | |
http://journal.stuffwithstuff.com/2015/09/08/the-hardest-program-ive-ever-written/ | |
http://habrahabr.ru/post/270173/ | |
https://github.com/Microsoft/microsoft-pdb/blob/master/docs/ExternalResources.md | |
https://jonathan2251.github.io/lbd/llvmstructure.html | |
https://www.reddit.com/r/programming/comments/48sijo/what_every_compiler_writer_should_know_about/ | |
http://www.backerstreet.com/decompiler/introduction.htm | |
http://peter.michaux.ca/articles/scheme-from-scratch-introduction | |
http://norvig.com/lispy.html | |
http://www.cs.toronto.edu/~matz/dissertation/matzDissertation-latex2html/node6.html | |
http://compilers.iecc.com/crenshaw/ | |
http://www.oilshell.org/blog/2017/04/22.html | |
https://www.craftinginterpreters.com/ | |
http://www.gamedev.ru/articles/?id=70104 | |
http://www.gamedev.ru/articles/?id=70118 | |
http://pointersgonewild.wordpress.com/ | |
http://forum.ixbt.com/topic.cgi?id=26:8572 | |
https://compilers.iecc.com/crenshaw/ | |
http://www.p1xelcoder.com/2014/10/02/design-and-implementation-of-a-domain-specific-language/ | |
https://github.com/gergo-/missed-optimizations | |
https://www.reddit.com/r/ProgrammingLanguages/comments/79fkpu/representing_asts_as_byte_strings_with_with_small/ | |
http://mrale.ph/ | |
https://gist.github.com/bencz/79d4738afe962b5479d1 | |
http://buildyourownlisp.com/contents | |
https://forum.dlang.org/thread/[email protected] | |
https://norasandler.com/2017/11/29/Write-a-Compiler.html | |
http://www.emulators.com/docs/nx25_nostradamus.htm | |
https://www.youtube.com/watch?v=eF9qWbuQLuw | |
https://github.com/rswier/c4 | |
https://github.com/FascinatedBox/lily#lily | |
https://pixel-druid.com/blog/papers-i-read-and-loved-in-2017/ | |
https://lagunita.stanford.edu/courses/Engineering/Compilers/Fall2014/info | |
https://www.reddit.com/r/ProgrammingLanguages/comments/89e5mt/minimal_practical_virtual_machine/ | |
https://www.reddit.com/r/ProgrammingLanguages/comments/8aimw7/are_there_any_good_resources_for_making_compilers/ | |
https://github.com/oilshell/oil/wiki/Lossless-Syntax-Tree-Pattern | |
https://github.com/dotnet/roslyn/wiki/Roslyn-Overview | |
https://www.youtube.com/watch?v=Txf7swrcLYs | |
https://github.com/danistefanovic/build-your-own-x | |
https://github.com/frol/completely-unscientific-benchmarks | |
https://github.com/dyu/ffi-overhead | |
https://github.com/aguinet/dragonffi | |
https://blog.mozilla.org/nnethercote/2018/06/05/how-to-speed-up-the-rust-compiler-some-more-in-2018/ | |
https://www.hillelwayne.com/post/formally-specifying-uis/ | |
https://www.reddit.com/r/programming/comments/8rwiyp/zapcc_a_caching_c_compiler_fork_of_clangllvm_that/ | |
https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction | |
https://www.reddit.com/r/programming/comments/4j52ia/anders_hejlsberg_on_modern_compiler_construction/ | |
https://habr.com/post/414443/ | |
https://www.youtube.com/watch?v=uZgbKrDEzAs&feature=youtu.be | |
http://stefan-marr.de/papers/oopsla-marr-ducasse-meta-tracing-vs-partial-evaluation/ | |
https://andrewkelley.me/post/string-matching-comptime-perfect-hashing-zig.html | |
https://www.reddit.com/r/ProgrammingLanguages/comments/9ukiul/are_there_languages_that_allow_you_to_play_around/ | |
https://ericlippert.com/2018/11/07/anti-unification-part-6/ | |
https://2018.fseconference.org/event/fse-2018-research-papers-how-should-compilers-explain-problems-to-developers- | |
https://www.reddit.com/r/ProgrammingLanguages/comments/a4ajlm/better_term_for_rust_similar_style_memory/ | |
https://github.com/true-grue/Compiler-Development/wiki/%D0%9E%D0%B1%D1%89%D0%B8%D0%B5-%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D1%8B-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D0%B8 | |
https://www3.nd.edu/~dthain/compilerbook/ | |
https://bernsteinbear.com/blog/bytecode-interpreters/ | |
https://habr.com/post/435260/ | |
https://miasm.re/blog/2017/10/05/playing_with_dynamic_symbolic_execution.html | |
https://habr.com/ru/post/451208/ | |
https://ijzerbaard.github.io/Direct-AST-to-ASM-translation/ | |
https://vaibhavsagar.com/blog/2019/09/08/popcount/ | |
https://medium.com/@FredericJacobs/why-i-m-not-enabling-bitcode-f35cd8fbfcc5 | |
https://swift.org/blog/new-diagnostic-arch-overview/ | |
https://www.pnfsoftware.com/blog/analyzing-golang-executables/ | |
https://wiki.osdev.org/Thread_Local_Storage | |
http://matt.might.net/articles/ | |
https://github.com/dadhi/FastExpressionCompiler/ | |
https://habr.com/ru/company/otus/blog/479802/ | |
http://notes.eatonphil.com/compiler-basics-an-x86-upgrade.html | |
https://news.ycombinator.com/item?id=22402123 | |
https://keleshev.com/compiling-to-assembly-from-scratch-the-book | |
https://old.reddit.com/r/ProgrammingLanguages/comments/fn7z4d/no_good_overview_of_how_languages_implement/ | |
https://xoofx.com/blog/2020/03/21/stark-native-compiler/ | |
https://andrewkelley.me/post/zig-cc-powerful-drop-in-replacement-gcc-clang.html | |
https://www.youtube.com/watch?v=MnctEW1oL-E | |
https://www.youtube.com/watch?v=lcF-HzlFYKE | |
https://www.youtube.com/watch?v=rq1DRuB9p7w | |
https://danghica.blogspot.com/2020/04/teaching-compilers.html | |
https://habr.com/ru/post/506832/ | |
https://github.com/Kixiron/rust-langdev | |
https://rickardlindberg.me/writing/rlmeta/ | |
about:blank | |
https://developercommunity.visualstudio.com/idea/975508/allow-redistribution-of-the-clexe-compiler.html | |
http://users.uoa.gr/~sdi1600105/articles.html | |
https://www.ralfj.de/blog/2018/07/24/pointers-and-bytes.html | |
https://www.ralfj.de/blog/2020/12/14/provenance.html | |
https://blog.sigplan.org/2021/02/23/teaching-compilers-backward/ | |
https://compiler.org/reason-re-nfa/src/index.html | |
https://steshaw.org/plt/ | |
https://github.com/lmbarros/Deelox | |
https://www.youtube.com/watch?v=Tar4WgAfMr4 | |
https://old.reddit.com/r/Compilers/comments/o9k92y/95_branch_prediction_accuracy/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment