|
@@ -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.
|