Zero Dereference – Telegram
Zero Dereference
127 subscribers
3 photos
3 files
372 links
Interesting links related to systems programming, hacking, and science.

Contact: @richiefreedom
Download Telegram
LinageOS is an alternative Android distribution. It is fast, small and secure. I have installed it on my Xiaomi Redmi 3 today and it works perfectly!

https://lineageos.org/
A series of blog posts describing the memory manager of the Linux i915 driver. Eventually clears how buffer objects are managed and mapped using GTT and PPGTT.

https://bwidawsk.net/blog/index.php/2014/06/the-global-gtt-part-1/

Use the main menu to access other posts.
MPC is a pure C library implementing parser combinators. You can write your parser using basic parsers and combinators from the library or just describe a grammar to generate the corresponding parser automatically.

https://github.com/orangeduck/mpc
This longread is a great way to show non-technical people what the programming is and why it is difficult but still interesting.

https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/

It's better to read the article in the desktop, full-featured browser, because the text contains many dynamic interactive examples.
Terry Davis has passed away in August. I didn't know that. In spite of his conflictness in community he was a brilliantly productive programmer. His last year was dufficult and finished tragically. Use links below to read more about him and his software.

https://en.m.wikipedia.org/wiki/Terry_A._Davis

https://en.m.wikipedia.org/wiki/TempleOS

https://motherboard.vice.com/en_us/article/wnj43x/gods-lonely-programmer

https://www.templeos.org/
Many members of the OSDEV community thought that Terry Devis was a kind of computer freak and considered his OS as an odd job. But, actually, Temple OS always had many strong features that one couldn't find in mainstream operating systems. The following article reveals such hidden things.

http://www.codersnotes.com/notes/a-constructive-look-at-templeos/
The following article shows why patch-based version control systems like Darcs and Pijul matter.

https://tahoe-lafs.org/~zooko/badmerge/simple.html
A hacker-friendly static site generator named sblg.

https://kristaps.bsd.lv/sblg/
Prose is an open source web application for content authoring on static web sites hosted on github. It supports Jekyll and detects its Markdown pages, performs syntax highlighting, shows previews with full template substitution and so on.

http://prose.io/
Most of us know the game Super Mario Bros, but not many of us know about a glitch in the game that allows teleportation to World -1 (minus one) through the warp zone (yes, those small underground rooms with green pipes allowing next level selection).

The following article explains why such behavior can be possible. Again, this is not an easter egg or hidden level, the whole additional world is just a glitch!

https://smcgamer.wordpress.com/2010/09/09/deconstructing-the-minus-world/amp/
An unfinished tutorial on writing a compiler for a Haskell-like programming language called Fun.

http://dev.stephendiehl.com/fun/
Список простых компиляторов/анализаторов языка Си или его подмножества.

Все проекты, перечисленные ниже, действительно легки в изучении и модификации. В этот список не вошли маленькие, но более серьезные компиляторы вроде pcc, lcc и компиляторов из plan9.

Neat CC
https://github.com/aligrudi/neatcc_make
Компилирует из подмножеста ANSI C в ARM, i686, X86_64. Есть простые оптимизации на промежуточном представлении. Простой, компактный и аккуратный, что и отражено в названии. Вместе с компилятором автор разрабатывает линкер, ассемблер и стандартную библиотеку. Для сборки требуется, чтобы был установлен транслятор ассемблера fasm. Нет поддержки floating point типов, битовых полей в структурах и некоторых других мелочей. Может собирать код других проектов Ali Gholami Rudi, названных с приставкой neat*.

Tiny C Compiler
https://bellard.org/tcc/
Современный и быстрый компилятор из подмножества C99 (нет комплексных типов). Простой и прямой, собирает множество реальных проектов. Когда-то даже умел собирать ядро Linux, но эта возможность была утрачена. Есть бэкенды для популярных процессорных архитектур и операционных систем.

8cc and 9cc
https://github.com/rui314/8cc
https://github.com/rui314/9cc
Цель разработчика - полная поддержка стандарта C11 при сохранении простоты кодовой базы. Целевая платформа - Linux x86_64.
Есть краткий лог с историей разработки 8cc:
https://www.sigbus.info/how-i-wrote-a-self-hosting-c-compiler-in-40-days.html

Simple C Compiler
https://github.com/8l/scc
Цель разработчиков (suckless.org) - создать простой компилятор C99 с обозримой, простой кодовой базой. Целевые платформы: Z80, x86_64, i686.

Smaller C
https://github.com/alexfru/SmallerC
Однопроходный компилятор с поддержкой C89 и некоторыми расширениями C99. В качестве целевой платформы использует язык ассемблера с NASM синтаксисом.

SubC
https://github.com/minux/subc
Подерживает довольно широкое подмножество C89. Есть бэкенды для ARMv6, i386 и X86_64. Описан в книге Nils M Holm "Practical Compiler Construction". Сильно развит в сравнении с версией из книги.

Sparse
https://sparse.wiki.kernel.org/index.php/Main_Page
Семантический анализатор кода, созданный Линусом Торвальдсом для анализа ядра Linux. На базе Sparse не раз пытались делать компиляторы, но ничем успешным оно не заканчивалось. Поддерживает C99 с множеством GNU расширений, которые используются в ядре Linux.
A library for audio and music processing. There is a good example of vocals separation.

https://librosa.github.io/
Golang is beautiful, but it doesn't fit the requirements of embedded systems. There is a try to bring the power of Go to Cortex-M series of MCUs through transpiling to C.

Unfortunately the codebase is messy sometimes, but it looks like a first step towards the noble goal.

I wish the author good luck with the project.

https://github.com/ziutek/emgo