Typo and format fixes 1984/mullender/README.md

Numerous typo fixes (like in links with an extraneous ')') and format fixes
were done.

Rebuilt index.html.
This commit is contained in:
Cody Boone Ferguson committed 2024-04-14 09:34:04 -07:00
1 parent dc8b61cb85
commit 878235d9b2
2 files changed
+35 -31

No files matched your search

+16 -14
View File
@@ -168,8 +168,8 @@ article for the quote! For a more detailed analysis, taken from the book Obfusca
and Other Mysteries, see below. We hope that this is okay with the author of the and Other Mysteries, see below. We hope that this is okay with the author of the
book. Considering that the analysis is entirely the authors' comments we don't book. Considering that the analysis is entirely the authors' comments we don't
think this will be a problem. Unfortunately the excerpt was PDF and it did not think this will be a problem. Unfortunately the excerpt was PDF and it did not
copy paste well. We had to go back and forth to type so it's possible he made a copy paste well. We had to go back and forth to type so it's possible we made a
typo though he also fixed some typos found in the extract. As for the other typo though we also fixed some typos found in the extract. As for the other
comments: comments:
### Remarks from the author: ### Remarks from the author:
@@ -194,7 +194,7 @@ We decided for fun to create an
[obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of [obfuscated](https://en.wikipedia.org/wiki/Obfuscation_(software)) set of
programs, only for the programs, only for the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor), to do this, but
circumventing the channel (i.e. cheating, hence the needed obfuscation.). Our circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
programs worked and we handed them in. programs worked and we handed them in.
Of course, the teacher had a good laugh and then rejected our submission. (We Of course, the teacher had a good laugh and then rejected our submission. (We
@@ -207,12 +207,12 @@ there](https://groups.google.com/g/net.lang.c/c/lx-TAuEyeRI/m/HdOOnNx6LC0J) and
it. it.
Since we had just recently created these [obfuscated Since we had just recently created these [obfuscated
programs](https://en.wikipedia.org/wiki/Obfuscation_(software))) we decided we could programs](https://en.wikipedia.org/wiki/Obfuscation_(software)) we decided we could
use the same technique for an obfuscated C program. We upped the ante a bit by use the same technique for an obfuscated C program. We upped the ante a bit by
making it "portable". making it "portable".
To add to the To add to the
[obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software))), we used [obfuscation](https://en.wikipedia.org/wiki/Obfuscation_(software)), we used
different formats for the integers in the array: some in decimal, some in octal, different formats for the integers in the array: some in decimal, some in octal,
some in hexadecimal, and when the value would fit, some as an ASCII character. some in hexadecimal, and when the value would fit, some as an ASCII character.
@@ -312,11 +312,11 @@ program counter points at the second
[instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions), [instruction](https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions),
we subtract 2 from the scratch register in the second instruction. Then we we subtract 2 from the scratch register in the second instruction. Then we
subtract the length of the string and store the result in the location with subtract the length of the string and store the result in the location with
label 0. This has to do with the calling sequence of [system label `0`. This has to do with the calling sequence of [system
calls](https://en.wikipedia.org/wiki/System_call) on the calls](https://en.wikipedia.org/wiki/System_call) on the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor). Following the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor). Following the
`sys` instruction is the system call number (4 for `write()`), the address of `sys` instruction is the system call number (4 for `write()`), the address of
the buffer (pointed to by label 0), and the length of the buffer (9). The [file the buffer (pointed to by label `0`), and the length of the buffer (9). The [file
descriptor](https://en.wikipedia.org/wiki/File_descriptor) is in register `r0`. descriptor](https://en.wikipedia.org/wiki/File_descriptor) is in register `r0`.
The rest of the code implements a delay loop. In each iteration, a non-existing The rest of the code implements a delay loop. In each iteration, a non-existing
system call (55) slows things down. system call (55) slows things down.
@@ -358,18 +358,18 @@ The first word (after the label `vax`) is the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) [branch
instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)). instruction](https://en.wikipedia.org/wiki/Branch_(computer_science)).
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) branch
instructions are octal `400+` the distance divided by 2. The string that both instructions are octal `400` + the distance divided by `2`. The string that both
the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) and
[VAX](https://en.wikipedia.org/wiki/VAX) [VAX](https://en.wikipedia.org/wiki/VAX)
programs use is after the `str` label, and the programs use is after the `str` label, and the
[PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) code is after the [PDP](https://en.wikipedia.org/wiki/Programmed_Data_Processor) code is after the
pdp label. `pdp` label.
On the [VAX](https://en.wikipedia.org/wiki/VAX), the program On the [VAX](https://en.wikipedia.org/wiki/VAX), the program
[pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length [pushes](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) 9 (the length
of the string), the address of the string and 1 (the [file of the string), the address of the string and 1 (the [file
descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the descriptor](https://en.wikipedia.org/wiki/File_descriptor) on the
[stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) and calls [stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type))) and calls
`write(2)`. Since we didn't know the exact calling sequence for [system `write(2)`. Since we didn't know the exact calling sequence for [system
calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for calls](https://en.wikipedia.org/wiki/System_call), we just copied the source for
the `write(2)` system call stub into our program. After `write(2)` finishes, the the `write(2)` system call stub into our program. After `write(2)` finishes, the
@@ -445,7 +445,8 @@ compiled in modern systems.
} }
``` ```
As can be seen, there is a slight preference for decimal, and also a character As can be seen, there is a slight preference for
[decimal](https://en.wikipedia.org/wiki/Decimal), and also a character
format is sometimes used, but only if the data is a printable ASCII character. format is sometimes used, but only if the data is a printable ASCII character.
When we ran this program, we were almost completely satisfied with the result. When we ran this program, we were almost completely satisfied with the result.
@@ -455,9 +456,10 @@ Since everybody knows what a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
branch instruction looks like (everyone knows that the traditional magic word branch instruction looks like (everyone knows that the traditional magic word
for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11) for an executable, `0407`, is a [PDP-11](https://en.wikipedia.org/wiki/PDP-11)
[branch](https://en.wikipedia.org/wiki/Branch_(computer_science))), we changed [branch](https://en.wikipedia.org/wiki/Branch_(computer_science))), we changed
that to decimal. After checking the size of the resulting program we saw that it that to [decimal](https://en.wikipedia.org/wiki/Decimal). After checking the
was one byte too long. The limit was 512 bytes, and our program was 513 bytes. size of the resulting program we saw that it was one byte too long. The limit
So we changed the word `and` in the comment to `&&`. was 512 bytes, and our program was 513 bytes. So we changed the word `and` in
the comment to `&&`.
<!-- <!--
+19 -17
View File
@@ -241,8 +241,8 @@ article for the quote! For a more detailed analysis, taken from the book Obfusca
and Other Mysteries, see below. We hope that this is okay with the author of the and Other Mysteries, see below. We hope that this is okay with the author of the
book. Considering that the analysis is entirely the authors’ comments we don’t book. Considering that the analysis is entirely the authors’ comments we don’t
think this will be a problem. Unfortunately the excerpt was PDF and it did not think this will be a problem. Unfortunately the excerpt was PDF and it did not
copy paste well. We had to go back and forth to type so it’s possible he made a copy paste well. We had to go back and forth to type so it’s possible we made a
typo though he also fixed some typos found in the extract. As for the other typo though we also fixed some typos found in the extract. As for the other
comments:</p> comments:</p>
<h3 id="remarks-from-the-author">Remarks from the author:</h3> <h3 id="remarks-from-the-author">Remarks from the author:</h3>
<p>I have never known a lot about the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a> <p>I have never known a lot about the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>
@@ -263,7 +263,7 @@ channel. This channel was simulated with a pair of
<a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated</a> set of <a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated</a> set of
programs, only for the programs, only for the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>, to do this, but <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>, to do this, but
circumventing the channel (i.e. cheating, hence the needed obfuscation.). Our circumventing the channel (i.e. cheating, hence the needed obfuscation). Our
programs worked and we handed them in.</p> programs worked and we handed them in.</p>
<p>Of course, the teacher had a good laugh and then rejected our submission. (We <p>Of course, the teacher had a good laugh and then rejected our submission. (We
knew him well, so we could get away with this.)</p> knew him well, so we could get away with this.)</p>
@@ -273,11 +273,11 @@ where we read a bunch of newsgroups. I’m sure it was <a href="https://groups.g
there</a> and we saw there</a> and we saw
it.</p> it.</p>
<p>Since we had just recently created these <a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated <p>Since we had just recently created these <a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscated
programs</a>) we decided we could programs</a> we decided we could
use the same technique for an obfuscated C program. We upped the ante a bit by use the same technique for an obfuscated C program. We upped the ante a bit by
making it “portable”.</p> making it “portable”.</p>
<p>To add to the <p>To add to the
<a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscation</a>), we used <a href="https://en.wikipedia.org/wiki/Obfuscation_(software)">obfuscation</a>, we used
different formats for the integers in the array: some in decimal, some in octal, different formats for the integers in the array: some in decimal, some in octal,
some in hexadecimal, and when the value would fit, some as an ASCII character.</p> some in hexadecimal, and when the value would fit, some as an ASCII character.</p>
<p>The rest is history.</p> <p>The rest is history.</p>
@@ -357,11 +357,11 @@ program counter points at the second
<a href="https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions">instruction</a>, <a href="https://en.wikipedia.org/wiki/Instruction_set_architecture#Instructions">instruction</a>,
we subtract 2 from the scratch register in the second instruction. Then we we subtract 2 from the scratch register in the second instruction. Then we
subtract the length of the string and store the result in the location with subtract the length of the string and store the result in the location with
label 0. This has to do with the calling sequence of <a href="https://en.wikipedia.org/wiki/System_call">system label <code>0</code>. This has to do with the calling sequence of <a href="https://en.wikipedia.org/wiki/System_call">system
calls</a> on the calls</a> on the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>. Following the <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a>. Following the
<code>sys</code> instruction is the system call number (4 for <code>write()</code>), the address of <code>sys</code> instruction is the system call number (4 for <code>write()</code>), the address of
the buffer (pointed to by label 0), and the length of the buffer (9). The <a href="https://en.wikipedia.org/wiki/File_descriptor">file the buffer (pointed to by label <code>0</code>), and the length of the buffer (9). The <a href="https://en.wikipedia.org/wiki/File_descriptor">file
descriptor</a> is in register <code>r0</code>. descriptor</a> is in register <code>r0</code>.
The rest of the code implements a delay loop. In each iteration, a non-existing The rest of the code implements a delay loop. In each iteration, a non-existing
system call (55) slows things down.</p> system call (55) slows things down.</p>
@@ -397,17 +397,17 @@ program that we came up with is as follows:</p>
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch
instruction</a>. instruction</a>.
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> branch <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> branch
instructions are octal <code>400+</code> the distance divided by 2. The string that both instructions are octal <code>400</code> + the distance divided by <code>2</code>. The string that both
the <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> and the <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> and
<a href="https://en.wikipedia.org/wiki/VAX">VAX</a> <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>
programs use is after the <code>str</code> label, and the programs use is after the <code>str</code> label, and the
<a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> code is after the <a href="https://en.wikipedia.org/wiki/Programmed_Data_Processor">PDP</a> code is after the
pdp label.</p> <code>pdp</code> label.</p>
<p>On the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>, the program <p>On the <a href="https://en.wikipedia.org/wiki/VAX">VAX</a>, the program
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">pushes</a> 9 (the length <a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">pushes</a> 9 (the length
of the string), the address of the string and 1 (the <a href="https://en.wikipedia.org/wiki/File_descriptor">file of the string), the address of the string and 1 (the <a href="https://en.wikipedia.org/wiki/File_descriptor">file
descriptor</a> on the descriptor</a> on the
<a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a> and calls <a href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">stack</a>) and calls
<code>write(2)</code>. Since we didn’t know the exact calling sequence for <a href="https://en.wikipedia.org/wiki/System_call">system <code>write(2)</code>. Since we didn’t know the exact calling sequence for <a href="https://en.wikipedia.org/wiki/System_call">system
calls</a>, we just copied the source for calls</a>, we just copied the source for
the <code>write(2)</code> system call stub into our program. After <code>write(2)</code> finishes, the the <code>write(2)</code> system call stub into our program. After <code>write(2)</code> finishes, the
@@ -479,7 +479,8 @@ compiled in modern systems.</p>
printf(&quot;};\n&quot;); printf(&quot;};\n&quot;);
} }
}</code></pre> }</code></pre>
<p>As can be seen, there is a slight preference for decimal, and also a character <p>As can be seen, there is a slight preference for
<a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>, and also a character
format is sometimes used, but only if the data is a printable ASCII character.</p> format is sometimes used, but only if the data is a printable ASCII character.</p>
<p>When we ran this program, we were almost completely satisfied with the result. <p>When we ran this program, we were almost completely satisfied with the result.
The only problem we had was that the program had chosen an The only problem we had was that the program had chosen an
@@ -488,9 +489,10 @@ Since everybody knows what a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-
branch instruction looks like (everyone knows that the traditional magic word branch instruction looks like (everyone knows that the traditional magic word
for an executable, <code>0407</code>, is a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a> for an executable, <code>0407</code>, is a <a href="https://en.wikipedia.org/wiki/PDP-11">PDP-11</a>
<a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>), we changed <a href="https://en.wikipedia.org/wiki/Branch_(computer_science)">branch</a>), we changed
that to decimal. After checking the size of the resulting program we saw that it that to <a href="https://en.wikipedia.org/wiki/Decimal">decimal</a>. After checking the
was one byte too long. The limit was 512 bytes, and our program was 513 bytes. size of the resulting program we saw that it was one byte too long. The limit
So we changed the word <code>and</code> in the comment to <code>&amp;&amp;</code>.</p> was 512 bytes, and our program was 513 bytes. So we changed the word <code>and</code> in
the comment to <code>&amp;&amp;</code>.</p>
<!-- <!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved. Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
@@ -518,14 +520,14 @@ So we changed the word <code>and</code> in the comment to <code>&amp;&amp;</code
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/Makefile">Makefile</a> - entry Makefile</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.alt.c">mullender.alt.c</a> - alternative source</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.alt.c">mullender.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.orig.c">mullender.orig.c</a> - original source</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/mullender.orig.c">mullender.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/a.out.h">a.out.h</a> - header file for gentab.c for compatibility with 1984 systems</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/gentab.c">gentab.c</a> - author tool to generate code</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/gentab.c">gentab.c</a> - author tool to generate code</li>
<li><a href="1984_mullender.tar.bz2">1984_mullender.tar.bz2</a> - download entry</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/a.out.h">a.out.h</a> - header file for gentab.c for compatibility with 1984 systems</li>
<li><a href="1984_mullender.tar.bz2">1984_mullender.tar.bz2</a> - download entry tarball</li>
</ul> </ul>
<h2 id="secondary-files">Secondary files</h2> <h2 id="secondary-files">Secondary files</h2>
<ul> <ul>
<li><a href="index.html">index.html</a> - this web page</li> <li><a href="index.html">index.html</a> - this web page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/README.md">README.md</a> - markdown source for index.html</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/README.md">README.md</a> - markdown source for this web page</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.entry.json">.entry.json</a> - description of entry in JSON</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.gitignore">.gitignore</a> - list of files that should not be committed under git</li> <li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1984/mullender/.gitignore">.gitignore</a> - list of files that should not be committed under git</li>
<li><a href=".path">.path</a> - directory path from top directory</li> <li><a href=".path">.path</a> - directory path from top directory</li>