From 14a380525ed2df295463b1906b718cb26871df3b Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Fri, 30 Nov 2018 16:54:01 -0800 Subject: 4809 - subx: html with 5 colors for comments --- html/subx/examples/ex7.subx.html | 228 ++++++++++++++++++++------------------- 1 file changed, 117 insertions(+), 111 deletions(-) (limited to 'html/subx/examples/ex7.subx.html') diff --git a/html/subx/examples/ex7.subx.html b/html/subx/examples/ex7.subx.html index fc0a4928..2a835bbb 100644 --- a/html/subx/examples/ex7.subx.html +++ b/html/subx/examples/ex7.subx.html @@ -11,14 +11,19 @@ @@ -53,110 +58,111 @@ if ('onhashchange' in window) {
-  1 ## example showing file syscalls
-  2 # Create a file, open it for writing, write a character to it, close it, open
-  3 # it for reading, read a character from it, close it, delete it, and return
-  4 # the character read.
-  5 #
-  6 # To run (from the subx directory):
-  7 #   $ subx translate examples/ex7.subx -o examples/ex7
-  8 #   $ subx run examples/ex7
-  9 # Expected result:
- 10 #   $ echo $?
- 11 #   97
- 12 
- 13 == code
- 14 # instruction                     effective address                                                   operand     displacement    immediate
- 15 # op          subop               mod             rm32          base        index         scale       r32
- 16 # 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
- 17 
- 18   # syscall(creat, Filename)
- 19   bb/copy-to-EBX  Filename/imm32
- 20   b9/copy-to-ECX  0x180/imm32/fixed-perms
- 21   b8/copy-to-EAX  8/imm32/creat
- 22   cd/syscall  0x80/imm8
- 23 
- 24   # stream = syscall(open, Filename, O_WRONLY, 0)  # we can't use 'fd' because it looks like a hex byte
- 25   bb/copy-to-EBX  Filename/imm32
- 26   b9/copy-to-ECX  1/imm32/wronly
- 27   ba/copy-to-EDX  0x180/imm32/fixed-perms
- 28   b8/copy-to-EAX  5/imm32/open
- 29   cd/syscall  0x80/imm8
- 30     # save stream
- 31   bb/copy-to-EBX  Stream/imm32
- 32   89/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           0/r32/EAX   .               .                       # copy EAX to *EBX
- 33 
- 34   # syscall(write, Stream, "a", 1)
- 35     # load stream
- 36   bb/copy-to-EBX  Stream/imm32
- 37   8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
- 38     #
- 39   b9/copy-to-ECX  A/imm32
- 40   ba/copy-to-EDX  1/imm32/size
- 41   b8/copy-to-EAX  4/imm32/write
- 42   cd/syscall  0x80/imm8
- 43 
- 44   # syscall(close, Stream)
- 45     # load stream
- 46   bb/copy-to-EBX  Stream/imm32
- 47   8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
- 48     #
- 49   b8/copy-to-EAX  6/imm32/close
- 50   cd/syscall  0x80/imm8
- 51 
- 52   # stream = syscall(open, Filename, O_RDONLY, 0)
- 53   bb/copy-to-EBX  Filename/imm32
- 54   b9/copy-to-ECX  0/imm32/rdonly
- 55   ba/copy-to-EDX  0x180/imm32/fixed-perms
- 56   b8/copy-to-EAX  5/imm32/open
- 57   cd/syscall  0x80/imm8
- 58     # save Stream
- 59   bb/copy-to-EBX  Stream/imm32
- 60   89/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           0/r32/EAX   .               .                       # copy EAX to *EBX
- 61 
- 62   # syscall(read, Stream, B, 1)
- 63     # load stream
- 64   bb/copy-to-EBX  Stream/imm32
- 65   8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
- 66     #
- 67   b9/copy-to-ECX  B/imm32
- 68   ba/copy-to-EDX  1/imm32/size
- 69   b8/copy-to-EAX  3/imm32/read
- 70   cd/syscall  0x80/imm8
- 71 
- 72   # syscall(close, Stream)
- 73     # load stream
- 74   bb/copy-to-EBX  Stream/imm32
- 75   8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
- 76     #
- 77   b8/copy-to-EAX  6/imm32/close
- 78   cd/syscall  0x80/imm8
- 79 
- 80   # syscall(unlink, filename)
- 81   bb/copy-to-EBX  Filename/imm32
- 82   b8/copy-to-EAX  0xa/imm32/unlink
- 83   cd/syscall  0x80/imm8
- 84 
- 85   # syscall(exit, b)
- 86     # load b
- 87   bb/copy-to-EBX  B/imm32
- 88   8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
- 89     #
- 90   b8/copy-to-EAX  1/imm32/exit
- 91   cd/syscall  0x80/imm8
- 92 
- 93 == data
- 94 
- 95 Stream:
- 96   00 00 00 00
- 97 A:
- 98   61 00 00 00
- 99 B:
-100   00 00 00 00
-101 Filename:
-102   2e 66 6f 6f 00 00 00 00
-103 
-104 # vim:nowrap:textwidth=0
+  1 # Example showing file syscalls.
+  2 #
+  3 # Create a file, open it for writing, write a character to it, close it, open
+  4 # it for reading, read a character from it, close it, delete it, and return
+  5 # the character read.
+  6 #
+  7 # To run (from the subx directory):
+  8 #   $ subx translate examples/ex7.subx -o examples/ex7
+  9 #   $ subx run examples/ex7
+ 10 # Expected result:
+ 11 #   $ echo $?
+ 12 #   97
+ 13 
+ 14 == code
+ 15 #   instruction                     effective address                                                   register    displacement    immediate
+ 16 # . op          subop               mod             rm32          base        index         scale       r32
+ 17 # . 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
+ 18 
+ 19     # syscall(creat, Filename)
+ 20     bb/copy-to-EBX  Filename/imm32
+ 21     b9/copy-to-ECX  0x180/imm32/fixed-perms
+ 22     b8/copy-to-EAX  8/imm32/creat
+ 23     cd/syscall  0x80/imm8
+ 24 
+ 25     # stream = syscall(open, Filename, O_WRONLY, 0)  # we can't use 'fd' because it looks like a hex byte
+ 26     bb/copy-to-EBX  Filename/imm32
+ 27     b9/copy-to-ECX  1/imm32/wronly
+ 28     ba/copy-to-EDX  0x180/imm32/fixed-perms
+ 29     b8/copy-to-EAX  5/imm32/open
+ 30     cd/syscall  0x80/imm8
+ 31     # save stream
+ 32     bb/copy-to-EBX  Stream/imm32
+ 33     89/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           0/r32/EAX   .               .                       # copy EAX to *EBX
+ 34 
+ 35     # syscall(write, Stream, "a", 1)
+ 36     # . load stream
+ 37     bb/copy-to-EBX  Stream/imm32
+ 38     8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
+ 39     # .
+ 40     b9/copy-to-ECX  A/imm32
+ 41     ba/copy-to-EDX  1/imm32/size
+ 42     b8/copy-to-EAX  4/imm32/write
+ 43     cd/syscall  0x80/imm8
+ 44 
+ 45     # syscall(close, Stream)
+ 46     # . load stream
+ 47     bb/copy-to-EBX  Stream/imm32
+ 48     8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
+ 49     # .
+ 50     b8/copy-to-EAX  6/imm32/close
+ 51     cd/syscall  0x80/imm8
+ 52 
+ 53     # stream = syscall(open, Filename, O_RDONLY, 0)
+ 54     bb/copy-to-EBX  Filename/imm32
+ 55     b9/copy-to-ECX  0/imm32/rdonly
+ 56     ba/copy-to-EDX  0x180/imm32/fixed-perms
+ 57     b8/copy-to-EAX  5/imm32/open
+ 58     cd/syscall  0x80/imm8
+ 59     # . save Stream
+ 60     bb/copy-to-EBX  Stream/imm32
+ 61     89/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           0/r32/EAX   .               .                       # copy EAX to *EBX
+ 62 
+ 63     # syscall(read, Stream, B, 1)
+ 64     # . load stream
+ 65     bb/copy-to-EBX  Stream/imm32
+ 66     8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
+ 67     # .
+ 68     b9/copy-to-ECX  B/imm32
+ 69     ba/copy-to-EDX  1/imm32/size
+ 70     b8/copy-to-EAX  3/imm32/read
+ 71     cd/syscall  0x80/imm8
+ 72 
+ 73     # syscall(close, Stream)
+ 74     # . load stream
+ 75     bb/copy-to-EBX  Stream/imm32
+ 76     8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
+ 77     #
+ 78     b8/copy-to-EAX  6/imm32/close
+ 79     cd/syscall  0x80/imm8
+ 80 
+ 81     # syscall(unlink, filename)
+ 82     bb/copy-to-EBX  Filename/imm32
+ 83     b8/copy-to-EAX  0xa/imm32/unlink
+ 84     cd/syscall  0x80/imm8
+ 85 
+ 86     # syscall(exit, b)
+ 87     # . load b
+ 88     bb/copy-to-EBX  B/imm32
+ 89     8b/copy                         0/mod/indirect  3/rm32/EBX    .           .             .           3/r32/EBX   .               .                       # copy *EBX to EBX
+ 90     #
+ 91     b8/copy-to-EAX  1/imm32/exit
+ 92     cd/syscall  0x80/imm8
+ 93 
+ 94 == data
+ 95 
+ 96 Stream:
+ 97     00 00 00 00
+ 98 A:
+ 99     61 00 00 00
+100 B:
+101     00 00 00 00
+102 Filename:
+103     2e 66 6f 6f 00 00 00 00
+104 
+105 # . . vim:nowrap:textwidth=0
 
-- cgit 1.4.1-2-gfad0