mirror of
https://github.com/pkivolowitz/asm_book.git
synced 2026-06-21 00:36:47 +08:00
README: proofing pass — typo fixes, factual corrections, updated bio
Full top-to-bottom proofread of the root README. Narrow fixes (typos, grammar, formatting, broken syntax): - Two malformed `</br>` closing tags replaced with `<br/>`. - "See the [here](...)" → "See [this chapter](...) for..." (the previous phrasing had a dangling article and a preposition that did not parse cleanly). - Stray angle brackets around a URL in the "Here is a link to 'a' main instruction set page" sentence removed (the brackets created a redundant autolink inside an already-formed markdown link). - "quite straight forward" → "straightforward" (one word). - "whose job it is turn high level languages" → inserted the missing "to". - Added backticks around "gcc" and "g++" in the "We use gcc and g++ directly..." sentence for consistency with every other reference to those tools in the file. - `main.s` → `main.S` in the "Suppose main() is implemented in assembly language..." paragraph; the surrounding prose teaches the capital-S convention, and the lowercase `.s` was contradicting the very point being made. - "for handing `#include`" → "for handling `#include`". - "a general tool can is used by other languages" → "a general tool used by other languages" (extra "can is" was clearly a mid-edit remnant). Substantive corrections: - The linker description listed ".dlls on Windows" as an example of a statically-linked library file. DLLs are the canonical dynamic linking format on Windows; static on Windows is .lib. The sentence now correctly separates the two categories: `.a` (Linux) and `.lib` (Windows) for static, `.so` (Linux) and `.dll` (Windows) for dynamic. - The "Twenty twenty three marks Perry's 19th year teaching..." paragraph was three years stale and referenced an ongoing count that had since ended. Replaced with a year-agnostic retirement statement summing the nineteen total years (ten UW Madison plus nine Carthage). The new phrasing will not age. - Normalized "pre-processor" (hyphenated) to "preprocessor" (one word) throughout the "C Preprocessor" subsection, matching the four unhyphenated uses that appeared earlier in the same document and aligning with common modern style. Section heading updated to match. Expanded author bio: - Added a new paragraph in "About The Author" surfacing credentials directly relevant to this book's systems/assembly audience: the undergraduate V6 Unix kernel study on a PDP-11/60, the subsequent Bell Labs Unix-internals teaching role, priority on the earliest known software keylogger, the 1985 appearance on Fred Fish Disk #1 (the first volume of the longest-running public-domain software library in personal-computing history), named references to the ASDG / TAD / ADPro / Elastic Reality commercial lineage, and the "Loaders → Operators → Savers" architectural throughline that has now evolved into the "Sensor → Operator → Emitter" pipeline in the author's current open-source GlowUp project (home automation broader than just lighting). The GlowUp repo at github.com/pkivolowitz/lifx is linked. Rejected alternatives: - Rolling the "19th year" numbers forward to 2026 rather than switching to the retirement framing — rejected because the count is no longer ongoing and any year-pinned phrasing will age the same way again. - A Front-Matter-level authorship / biography section rather than an addition to the existing "About The Author" section — rejected as tonally too heavy; biography belongs where biography already lives. - Fixing the DLL/static-linking text by simply renaming "statically linked" to "dynamically linked" for the .dll example — rejected because the surrounding sentence teaches the concept of library linking and benefits from showing both categories side by side. No test coverage applies; this is prose.
This commit is contained in:
parent
fd674539a0
commit
4805083a87
1 changed files with 35 additions and 19 deletions
54
README.md
54
README.md
|
|
@ -11,9 +11,9 @@ We drive home a very sharp point:
|
|||
<center>
|
||||
<i>Assembly language is nothing to be scared of!</i>
|
||||
</center>
|
||||
</br>
|
||||
<br/>
|
||||
|
||||
</br>
|
||||
<br/>
|
||||
|
||||
<h2>
|
||||
<a href="#table-of-contents">
|
||||
|
|
@ -62,7 +62,7 @@ we call `write` from the assembly language.
|
|||
|
||||
This version of the system call `write` is a wrapper function built into
|
||||
the C-runtime (CRT) which handles the lower level details of performing
|
||||
a system call. See the [here](./more/system_calls/README.md) on what
|
||||
a system call. See [this chapter](./more/system_calls/README.md) for what
|
||||
actually happens inside these wrapper functions.
|
||||
|
||||
The benefit of using the CRT wrappers is that there are differences
|
||||
|
|
@ -83,13 +83,13 @@ documentation in general. It really can be maddening.
|
|||
|
||||
Within the text we will provide germane links as appropriate.
|
||||
|
||||
[Here](<https://developer.arm.com/documentation/ddi0596/2021-12?lang=en>)
|
||||
[Here](https://developer.arm.com/documentation/ddi0596/2021-12?lang=en)
|
||||
is a link to "a" main instruction set page.
|
||||
|
||||
### What you need to work with assembly language on Linux
|
||||
|
||||
Getting the tools for assembly language development is quite straight
|
||||
forward - perhaps you already have them. Using `apt` from the Linux
|
||||
Getting the tools for assembly language development is quite
|
||||
straightforward - perhaps you already have them. Using `apt` from the Linux
|
||||
terminal, say:
|
||||
|
||||
```text
|
||||
|
|
@ -128,20 +128,21 @@ to only one step in a build sequence. What we talk about as being the
|
|||
if your file ends in a lower case s or any other file extension
|
||||
depending upon your system.
|
||||
|
||||
* The *actual* compiler, whose job it is turn high level languages
|
||||
* The *actual* compiler, whose job it is to turn high level languages
|
||||
such as C and C++ into assembly language.
|
||||
|
||||
* The assembler, which turns assembly language into machine code which
|
||||
is not quite ready for execution.
|
||||
|
||||
* And finally, the linker, which combines potentially many intermediate
|
||||
machine code files (called object files), potentially many library
|
||||
files (statically linked .dlls on Windows and .a files on Linux). The
|
||||
linker is the last step in this chain.
|
||||
machine code files (called object files) with potentially many library
|
||||
files (statically linked `.a` files on Linux or `.lib` files on
|
||||
Windows; dynamically linked `.so` files on Linux or `.dll` files on
|
||||
Windows). The linker is the last step in this chain.
|
||||
|
||||
[Here](https://youtu.be/Iv3psS4n9j8) is a video explaining this process.
|
||||
|
||||
We use gcc and g++ directly because, being umbrellas, they automate
|
||||
We use `gcc` and `g++` directly because, being umbrellas, they automate
|
||||
the above steps and automatically link with the CRT.
|
||||
|
||||
Suppose you've implemented `main()` in a C file (main.c) and want to
|
||||
|
|
@ -171,7 +172,7 @@ method, the `.o` files are removed without you seeing them.
|
|||
|
||||
### If there are no C or C++ modules used
|
||||
|
||||
Suppose `main()` is implemented in assembly language and `main.s` is
|
||||
Suppose `main()` is implemented in assembly language and `main.S` is
|
||||
self-contained, then simply:
|
||||
|
||||
```text
|
||||
|
|
@ -187,15 +188,15 @@ gcc -g main.S
|
|||
Without the `-g` command line option, your debugger may not properly
|
||||
operate.
|
||||
|
||||
#### The C Pre-Processor
|
||||
#### The C Preprocessor
|
||||
|
||||
To repeat, if you want `gcc` to run your code through the C
|
||||
pre-processor (for handing `#include` for example), name your assembly
|
||||
preprocessor (for handling `#include` for example), name your assembly
|
||||
language source code files with a capital S. So, on Linux:
|
||||
|
||||
`gcc main.s`
|
||||
|
||||
Will not go through the C pre-processor but
|
||||
Will not go through the C preprocessor but
|
||||
|
||||
`gcc main.S`
|
||||
|
||||
|
|
@ -215,7 +216,7 @@ on ARM:
|
|||
/usr/bin/ld
|
||||
```
|
||||
|
||||
`cpp` is the C preprocessor - it is a general tool can is used by other
|
||||
`cpp` is the C preprocessor - it is a general tool used by other
|
||||
languages as well (C++, for example).
|
||||
|
||||
`cc1` is the actual compiler.
|
||||
|
|
@ -367,9 +368,24 @@ for his invention of Shape Driven Warping and Morphing. This is the
|
|||
technique responsible for many of the famous effects in Forrest Gump,
|
||||
Titanic and Stargate.
|
||||
|
||||
Twenty twenty three marks Perry's 19th year teaching Computer Science at
|
||||
the college level, ten years at the UW Madison and now 8+ at Carthage
|
||||
College.
|
||||
Perry retired from college teaching after nineteen years — ten at UW
|
||||
Madison and nine at Carthage College.
|
||||
|
||||
Perry's early career ran deep in Unix and the Amiga. As an undergraduate
|
||||
he read the V6 Unix kernel from source on a PDP-11/60; he later taught
|
||||
Unix internals at Bell Labs. He wrote what is believed to be the first
|
||||
software keylogger. In 1985 his work appeared on Fred Fish Disk #1 —
|
||||
the first volume of the longest-running public-domain software library
|
||||
in personal-computing history. His commercial work through **ASDG**,
|
||||
**TAD**, **ADPro**, and **Elastic Reality** centered on a "Loaders →
|
||||
Operators → Savers" pipeline architecture he invented and carried
|
||||
through five product generations across desktop publishing, multimedia,
|
||||
video, and film. The same architecture has most recently evolved into
|
||||
a **Sensor → Operator → Emitter (SOE)** pipeline in his current
|
||||
open-source project **GlowUp**
|
||||
([github.com/pkivolowitz/lifx](https://github.com/pkivolowitz/lifx)) —
|
||||
a generalized sensor-fusion and effectuation platform that began as
|
||||
smart-lighting control and now runs an ever-growing share of his home.
|
||||
|
||||
Assembly language is a passion for Perry having worked in the following
|
||||
ISAs (in chronological order):
|
||||
|
|
|
|||
Loading…
Reference in a new issue