On 8/23/2021 8:51 PM, Van Snyder via cctech wrote:
On Tue, 2021-08-24 at 01:38 +0100, Tom Stepleton via
cctalk wrote:
For the sake of illustration to folks who are not
necessarily used to
thinking about what computers do at the machine code level, I'm
interested
in collecting examples of single instructions for any CPU
architecture that
are unusually prolific in one way or another.
IBM 1401 was a character-by-character machine, so most operations had
costs proportional to field length.
One especially expensive (but very useful) operation was "move
characters and edit."
Assuming a 17-character control word has been loaded to the
destination, e.g.
"$ ? , ?0. &CR&**"
to edit a data field "00257426" with a "negative" zone bit on the
low-
order digit, producing
"$ ?2,574.26 CR **"
requires 41 memory accesses (including seven to fetch the instruction)
-- 0.4715 milliseconds.
See pages 41-43
at?http://www.bitsavers.org/pdf/ibm/1401/A24-1403-5_1401_Reference_Apr62.pdf
On a machine where ?the "Expanded Print Edit Feature" was added, the
instruction cost even more. For example, the "Floating Dollar Sign"
moves the dollar sign to immediately to the left of the most
significant digit. This (and asterisk protection) was to prevent
somebody from adding digits between a left-justified dollar sign and
leading digits on printed checks. The above edit would cost two more
memory cycles. If the datum had had more leading zeroes, even more
cycles would have been required.
Useful for COBOL. ;)
See pages 82-84.
Another expensive instruction was the simpler "move characters and
suppress zeros" instruction. See page 38.
Along those same lines, the IBM 1410 had what the 1401 had, plus:
http://www.bitsavers.org/pdf/ibm/1410/A22-0526-3_1410_princOps.pdf
- A very useful table lookup instruction (pp 29-31)
- At least 56 ways to move data, depending upon the "d" character
(op modifier) specified (pp 25-28)
- A scan that could stop at various terminators without moving data
(pp 26-27)
JRJ