about summary refs log tree commit diff stats
path: root/subx/ex4.subx
diff options
context:
space:
mode:
Diffstat (limited to 'subx/ex4.subx')
-rw-r--r--subx/ex4.subx23
1 files changed, 23 insertions, 0 deletions
diff --git a/subx/ex4.subx b/subx/ex4.subx
new file mode 100644
index 00000000..98b9f55a
--- /dev/null
+++ b/subx/ex4.subx
@@ -0,0 +1,23 @@
+## read a character from stdin
+
+# opcode        ModR/M                    SIB                   displacement    immediate
+# instruction   mod, reg, Reg/Mem bits    scale, index, base
+# 1-3 bytes     0/1 byte                  0/1 byte              0/1/2/4 bytes   0/1/2/4 bytes
+# 0: e_entry = 0x08048054
+  ## read(1, x, 1)
+  # fd = 1
+  bb                                                                            1/imm32       # copy 1 to EBX
+  # set location to write to
+  b9                                                                            00 80 04 08   # copy 0x08040000 to ECX
+  # size = 1 character
+  ba                                                                            1/imm32       # copy 1 to EDX
+  # syscall = read
+  b8                                                                            3/imm32       # copy 3 to EAX
+  # call
+  cd                                                                            128/imm8      # int 80h
+
+  ## exit(EBX)
+  b8                                                                            1/imm32       # copy 1 to EAX
+  cd                                                                            128/imm8      # int 80h
+
+# vim:ft=subx:nowrap