about summary refs log tree commit diff stats
path: root/apps/random.subx
diff options
context:
space:
mode:
Diffstat (limited to 'apps/random.subx')
-rw-r--r--apps/random.subx59
1 files changed, 0 insertions, 59 deletions
diff --git a/apps/random.subx b/apps/random.subx
deleted file mode 100644
index 71012309..00000000
--- a/apps/random.subx
+++ /dev/null
@@ -1,59 +0,0 @@
-# Repeatedly read 32-bit numbers from /dev/random, print them to stdout.
-#
-# To run:
-#   $ ./bootstrap translate init.linux [01]*.subx apps/random.subx -o apps/random
-#   $ ./bootstrap run apps/random
-
-== code 0x09000000
-#   instruction                     effective address                                                   register    displacement    immediate
-# . op          subop               mod             rm32          base        index         scale       r32
-# . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
-
-Entry:
-    # stream/esi = syscall(open, "/dev/null", O_RDONLY, 0)  # we can't use 'fd' because it looks like a hex byte
-    bb/copy-to-ebx  Filename/imm32
-    b9/copy-to-ecx  0/imm32/rdonly
-    ba/copy-to-edx  0x180/imm32/fixed-perms
-    e8/call  syscall_open/disp32
-    # . stream = eax
-    89/copy                         3/mod/direct    6/rm32/esi    .           .             .           0/r32/eax   .               .                 # copy eax to esi
-
-$loop:
-
-    # syscall(read, Stream, N, 4)
-    89/copy                         3/mod/direct    3/rm32/ebx    .           .             .           6/r32/esi   .               .                 # copy esi to ebx
-    b9/copy-to-ecx  N/imm32
-    ba/copy-to-edx  4/imm32/size
-    e8/call  syscall_read/disp32
-
-    # write-int32-hex-buffered(Stdout, *N)
-    # . . push args
-    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32            .             .           .           N/disp32                          # push *N
-    68/push  Stdout/imm32
-    # . . call
-    e8/call  write-int32-hex-buffered/disp32
-
-    # write-buffered(Stdout, Newline)
-    # . . push args
-    68/push  Newline/imm32
-    68/push  Stdout/imm32
-    # . . call
-    e8/call  write-buffered/disp32
-    # . . discard args
-    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
-
-    eb/jump  $loop/disp8
-
-    # syscall(exit, 0)
-    bb/copy-to-ebx  0/imm32
-    e8/call  syscall_exit/disp32
-
-== data 0x0a000000
-
-N:
-    0/imm32
-Filename:
-    2f 64 65 76 2f 72 61 6e 64 6f 6d 00
-#   /  d  e  v  /  r  a  n  d  o  m  null
-
-# . . vim:nowrap:textwidth=0