ASSUMPTIONS.md 1.1 KB

Low level assumptions in asmc

This is a (currently incomplete and informal) list of things asmc currently assumes on the underlying computing platform.

Processor

An x86 CPU which implements at least the following features and instructions.

Standard stuff used all over

  • CPU capable of running in 32 bit protected mode with flat segmenting, no paging and disabled interrupts.

  • Stack manipulation instructions: push, pop

  • Arithmetic instructions: mov, add, sub, cmp, mul, div, neg

  • Bit manipulation instructions: and, or, xor, not, shl, shr, sar, test

  • Control flow instructions: near call, near ret, near jmp, jcc, hlt

  • IO instructions: in, out

Boot loader

  • CPU capable of running in 16 bit real mode.

  • Segmenting instructions: mov to segment, far jump, lgdt

  • Interrupt instructions: int, cli

Kernel and G compiler

G compiler generated code

  • Arithmetic instructions: lea, idiv, imul, cdq

64 bit numbers support

Firmware

A standard-ish BIOS interface.

Devices

  • A standard disk controller accessible through its ATA PIO mode interface on ports 0x1f0-0x1f7.