x86/x64 CPU architecture: the stack & stack frames

x86/x64 CPU architecture: the stack & stack frames 20.Feb.2024, Yuriy Georgiev The stack as a data structure The stack is a linear data structure. It follows a last in, first out (LIFO) protocol. The latest piece of data added to a stack is the one which is eligible to be removed first. If three nodes ( […]
Lossless compression – Huffman Coding & RLE

Lossless compression – Huffman Coding & RLE 03.Feb.2024, Yuriy Georgiev Intro Lossless compression is a form of data compression that reduces data/file sizes without sacrificing any information in the process. No details are lost along the way. In this tutorial, I will introduce you to the Huffman coding and Run-Length encoding (RLE) algorithms. Huffman coding is used in […]
The Windows Portable Executable (PE) File Format

The Windows Portable Executable (PE) File Format 17.Dec.2023, Yuriy Georgiev Intro The Portable Executable (PE) is a Common Object File Format (COFF) for executable, object code and libraries of all Microsoft Windows operating systems. Other COFF formats are: ELF – used in many Unix-like operating systems (Linux, BeOS…) Mach-O – from the NeXTSTEP to nowadays […]
Reverse-Engineering: 101

Reverse-Engineering: 101 18.May.2023, Yuriy Georgiev What will you learn Reverse-Engineering of Windows executables What tools do you need and how to use them to break and enter the executable code Minimal basics of the Windows API and the Portable Executable (PE) file format Minimal basics of CPU instruction set architecture (ISA) and assembly language […]
Computer Graphics: Colors, Photons, and the Human Eye

Computer Graphics: Colors, Photons and the Human Eye 27.Sep.2022, Yuriy Georgiev Intro The importance of colors in computer graphics is probably more vital than you think. The reason is that we use them not just to colorize things but also to deliver extra information for the human brain to process, and to “fool” the person […]
Polygon-based (DOOM-like) 3D Software rendering engine from scratch

Polygon-based (DOOM-like) 3D software rendering engine from scratch This tutorial will focus on the subject of coding pseudo-3D graphics. I call it pseudo-3D because it will work with 2D maps and transform them to appear as 3D on the screen. It will not support everything that a true 3D offers. A true 3D assumes 3D […]
Game Engines (why should you care)
Game Engines (and why should you care?) – Intro Yuriy Georgiev, 13.Aug.2022 This article is primarily for people who are new to the term “Game Engine” and don’t know what exactly it involves.Before starting talking on the topic, let me clarify several things right from the beginning. First and foremost, when I say “game engine”, […]
VMM in 32-bit OSes
Virtual Memory Management in 32-bit Operating Systems (The 4GB Addressing Limit) Yuriy Georgiev, 09.Aug.2022 In the following article I will explain briefly how the virtual memory is organised by the OS in 32 bit systems and where the 4GB address limitation comes from. It works with two tables (imagine a 2D array) — a page […]
8088 and 386SX
8088 & 386SX – the stupidest CPU architectures ever Yuriy Georgiev, 10.Aug.2022 Recently I was reading some ancient literature, and I was hit by a horrible statement. Let me take a few steps back and briefly explain the core of the 8088 CPU elements so you can better understand my frustration. Some of the main […]