Skip to content

Instantly share code, notes, and snippets.

View artsi0m's full-sized avatar
🖤

Artsiom artsi0m

🖤
  • Minsk
  • 10:57 (UTC +03:00)
View GitHub Profile

These are simplified examples I came up with to go along with William Woodruff's excellent blog post on x86-64 addressing modes.

All the examples are compiled with GCC -O3 or -Os, which is indicative of what the compiler thinks the best option is in practice.

Base + Index

Use case: Indexing into a byte array (whose address is not fixed)

char f(char buf[], int index)
@konyahin
konyahin / skefir.sh
Created November 17, 2024 12:15
less based simple gopher browser
#!/usr/bin/env sh
set -eu
LESS_VERSION=$(less --version | head -n 1 | awk '{print $2}' | cut -d. -f1)
if [ "$LESS_VERSION" -lt "582" ]; then
echo "Your less version is too old ($LESS_VERSION). Please, install 582+ version of less."
exit 1
fi
@kant2002
kant2002 / Урок из Цезиума.md
Created March 7, 2024 08:33
Урок из Цезиума

Урок из Цезиума

Цезиум дает мне кучу анти-уроков по архитектуре компиляторов. Это явно не самый эффективный способ построения компилятора, так как вечный рефакторинг деморализует даже оптимистов вроде меня. Потому попробую рассказать как выглядит лень и не желание учить теорию.

Есть такая маленькая особенность в С, это то что в main последний return не обязателен и компилятор может его сам вставить за программиста. Мы как большие прагматики, сперва сделали какой-то костыль, чтобы тестовые програмки которые мы писали проходили. Просто смотрели на наличие return в теле функции и если его не было, компилятор возмущался. у нас тогда не было даже нормальных циклов в свитчей, потому это была победа. Но пришли циклы и с ними новые вызовы, добрый человек взял и начал строить граф зависимости между стейтментами, и пытался найти все ли пути ведут к выходу. Зашибись, прогресс идет. Но кто же знал что бывают бесконечные циклы, в которых есть return. Новый алгоритм с графами сломался :(. Сломался он пото

@Yuliosity
Yuliosity / pld_beginners.md
Last active August 9, 2025 08:08
Устройство ЯП для новичков — правила чата

Устройство ЯП для новичков — правила чата 0.1.1

Чат задуман как ответвление от @LanguageDev и @CompilerDev как для начинающих, которые стесняются тамошней суровой атмосферы, так и для альтруистов-профессионалов, готовых им помогать.

Можно и нужно:

  • Обсуждать языки программирования, компиляторы и всякие смежные темы (виртуальные машины, отладчики, линковщики, статические анализаторы, LSP и прочие плагины для IDE, ...).
  • Задавать любые вопросы по всем этим темам, не боясь, что бывалым они могут показаться глупыми.

С осторожностью:

@madwareru
madwareru / EOPL3_week_1.md
Last active November 4, 2023 16:29
пост-отзыв по книге Essentials Of Programming Languages после первой неполной недели чтения

Итак, пост-отзыв по EOPL3 после первой неполной недели чтения.

Из двух глав осилил пока только первую, где в основном столкнулся с проблематикой задания различных наборов данных через индукцию, как и было обещано в названии 🙂

Обычно, множества предлагается задавать через т.н. list comprehensions, которые есть во многих ФП языках типа хаскеля, а так же есть в python, C#, Kotlin и т.д.

Примеры ниже (на python, C# и Kotlin соответственно):

@hack-tramp
hack-tramp / AVRAwMSVS.txt
Last active May 29, 2024 16:30
How to compile AVRA with MS Visual Studio 2019
How to compile AVRA https://github.com/Ro5bert/avra
with MS Visual Studio 2019
New Project > Console Application > C++
(create it empty without any files)
Import all .c and .h files from AVRA src folder
In file.c, you will need to change line
#include <unistd.h> into:
@nstarke
nstarke / resize-ghidra-gui.md
Last active June 20, 2026 14:42
Resize Ghidra GUI for High DPI screens

Resize Ghidra for High DPI screens

If you run Ghidra on a high DPI screen, you will probably find the GUI to be scaled down so small to be almost of no use.

There is a setting that you can adjust to scale the Ghidra GUI:

in $GHIDRA_ROOT/support is a file named launch.properties. In this launch.properties file is the following configuration key:

VMARGS_LINUX=-Dsun.java2d.uiScale=1
@exocode
exocode / kicad-cheat-sheet.md
Created April 6, 2019 20:18
KiCad short manual and cheat sheet

Flow

  1. Design Circuit
  2. Create Symbols (library editor)
  3. Schematic capture (eeschema)
  4. Create footprints (footprint editor)
  5. Generate Netlist (cvpcb)
  6. Board layout (pcbnew)
  7. Production (gerbview)
  8. Generate BOM (Digi-Key)
@thefranke
thefranke / RSS.md
Last active July 6, 2026 00:11
A list of RSS endpoints, feed-readers and resources

The RSS Endpoint List

Please refer to this blogpost to get an overview.

Replace *-INSTANCE with one of the public instances listed in the scrapers section. Replace CAPITALIZED words with their corresponding identifiers on the website.

Social Media

Twitter