f91bc2804d
This commit slightly improves the formatting of the manuals. My OpenBSD machine uses mandoc(1) to format manuals. I check the manuals with `mandoc -T lint` and fix most of the warnings. I also make other changes where mandoc didn't warn me. roff(7) says, "Each sentence should terminate at the end of an input line," but we often forgot this rule. I insert some newlines after sentences that had ended mid-line. roff(7) also says that blank lines "are only permitted within literal contexts." I delete blank lines. This removes some extra blank lines from mandoc's output. If I do want a blank line in the output, I call ".sp 1" to make it in man(7). If I want a blank line in the source, but not the output, I put a plain dot "." so roff ignores it. Hyphens used for command-line options, like \-a, should be escaped by a backslash. I insert a few missing backslashes. mandoc warns if the date in .TH doesn't look like a date. Our manuals had a missing date or the RCS keyword "$Revision$". Git doesn't expand RCS keywords. I put in today's date, 2017-01-18. Some manuals used tab characters in filled mode. That doesn't work. I use .nf to turn off filled mode, or I use .IP in man(7) to make the indentation without a tab character. ack(1) defined a macro .SB but never used it, so I delete the definition. I also remove a call to the missing macro .RF. mandoc warns about empty paragraphs. I deleted them. mandoc also warned about these macro pairs in anm(1): .SM .B text The .SM did nothing because the .B text is on a different line. I changed each pair to .SB for small bold text. I make a few other small changes.
54 lines
1.7 KiB
Groff
54 lines
1.7 KiB
Groff
.TH EM_B 6 2017-01-18
|
|
.ad
|
|
.SH NAME
|
|
em_b \- ACK B compiler
|
|
.SH SYNOPSIS
|
|
.B ~em/lib/ack/em_b
|
|
.RI [ options ]
|
|
.SH DESCRIPTION
|
|
.I em_b
|
|
is a port of the ABC B compiler to the ACK.
|
|
Interested parties will be
|
|
interested in the upstream distribution here:
|
|
.nf
|
|
.sp
|
|
https://github.com/aap/abc
|
|
.fi
|
|
.PP
|
|
However, the version here has been heavily modified \(em bug reports should be
|
|
filed with the ACK, not with the upstream compiler.
|
|
.PP
|
|
Since B was designed for machines with word addressing, some hacking is
|
|
required to make it work on modern, byte addressed machines.
|
|
The generated
|
|
code expects B variables to contain word addresses, and then generates
|
|
code to transform these into native addresses before use (which,
|
|
unfortunately, impacts performance).
|
|
However, the ACK's linker doesn't know
|
|
how to emit word addresses into the program's data sections, and so a
|
|
separate fixup stage has to happen at runtime, just before \fBmain()\fP,
|
|
to convert the byte addresses into word addresses.
|
|
.PP
|
|
The end result is that using multiple source files with B is somewhat
|
|
unwieldy, requiring each module to be explicitly named and then an extra
|
|
stage to generate the fixup code.
|
|
See the \fBack\fP(1) and \fBabmodules\fP(1) for details.
|
|
.SH OPTIONS
|
|
.I em_b
|
|
accepts the following flags:
|
|
.IP \-w\ \fIsize\fP
|
|
Sets the word size, used for scaling addresses.
|
|
Usually either 2 or 4.
|
|
.IP \-B\ \fIname\fP
|
|
Sets the name of the module currently being compiled (used to generate the
|
|
fixup table symbol name).
|
|
Defaults to \fImain\fP if not specified.
|
|
.IP \-i\ \fIfilename\fP
|
|
The source B file.
|
|
.IP \-o\ \fIfilename\fP
|
|
The output compact EM bytecode file.
|
|
.SH SEE ALSO
|
|
\fIack\fR(1), \fIabmodules\fR(1)
|
|
.SH REMARKS
|
|
It is very unlikely the \fIem_b\fP will ever be useful for anything.
|