Browse Source

Write down low level assumptions.

Giovanni Mascellani 5 years ago
parent
commit
145a6c92c7
1 changed files with 49 additions and 0 deletions
  1. 49 0
      ASSUMPTIONS.md

+ 49 - 0
ASSUMPTIONS.md

@@ -0,0 +1,49 @@
+# 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.