x86-64 Assembly Guide (AMD64 / Intel 64, Intel (NASM) syntax)

Contents: Registers | Memory and Addressing | Instructions | Calling Convention (System V AMD64) This page is a 64-bit (x86-64) adaptation of the classic 32-bit x86 Assembly Guide, rewritten for NASM in Intel syntax. We assume x86-64 on UNIX-like systems (Linux/BSD/macOS) and focus on the instruction subset used in typical systems/CS courses. NASM + Intel syntax basics Compared to AT&T syntax: Operand order is destination, source. Registers are written without a % prefix (e....

10 min

x86-64 Assembly Guide (GNU/AT&T syntax)

Contents: Registers | Memory and Addressing | Instructions | Calling Convention (System V AMD64) This page is a 64-bit (x86-64) adaptation of the classic 32-bit x86 Assembly Guide (AT&T syntax / GNU as). It keeps the same teaching style and subset of instructions, but updates: register names and sizes, stack behavior, addressing, and the calling convention. We assume the GNU assembler (gas) using the standard AT&T syntax on UNIX-like systems. Operand order is source, destination....

9 min

CS5460/6450 Operating Systems Home Homework 2: ELF files This assignment will make you more familiar with the organization of ELF files. You can complete it on any operating system that supports the Unix API—for example: Linux CADE machines Your own laptop running Linux (or a Linux VM) macOS but only if your Mac is Intel (x86-64) or you can setup a cross-compilation environment (we suggest you use nix for this) You do not need to set up xv6 for this assignment....

30 min

Homework 3: Boot into C This assignment will teach you to build a minimal bootable kernel that boots into C on real x86_64 hardware. It will boot using GRUB, print "Hello, world!" on the screen, and then print "Hello from C!" on the serial line from the main() function. Technically, you can do this assignment on any operating system that lets you use GCC, make, GRUB2, and QEMU (CADE machines, your laptop running Linux, a Linux VM such as WSL on Windows, and even macOS with cross-compilation via Nix, etc....

72 min

Homework 1 - Shell

This assignment will teach you how to use the Unix system call interface and the shell by implementing a small shell, which we will refer to as the 5460/6450 shell. You will also learn how to use GDB to debug your code. You can do this assignment on any operating system that supports the Unix API (Linux CADE machines, your laptop that runs Linux or Linux VM, and even MacOS, etc....

22 min