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

Contact: @richiefreedom
Download Telegram
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
Mark 1 is a DIY TTL-based FORTH computer.

http://www.aholme.co.uk/Mk1/Architecture.htm
A simple round-robin preemptive multitasking system written in 6502 assembly language.

http://6502.org/source/kernels/minikernel.txt
Pixilang is an easy to learn and use programming language for small demos with graphics and music written by famous Alex Zolotov. You may think that this language is too simple for serious software, but Alexander has written many useful applications in Pixilang including such cool thigs as PixiTracker.

http://www.warmplace.ru/soft/pixilang/index_ru.php
I'm almost sure, you've heard about Sam - a small text editor written by Rob Pike. Modern, refined version of this editor can be found in Deadpixi's git repo. Many superstars of computer science loved it.

https://github.com/deadpixi/sam
ISO has updated standards of C and Fortran.
Mozart is a programming system based on a multiparadigm programming language Oz.

This language is used in a perfect book of Peter Van Roy and Seif Haridi - Concepts, Techniques and Models of Computer Programming.

http://mozart.github.io/