Node:bare metal, Next:barf, Previous:bar, Up:= B =

bare metal n.

1. [common] New computer hardware, unadorned with such snares

and delusions as an operating

system, an HLL, or even

assembler. Commonly used in the phrase `programming on the bare

metal', which refers to the arduous work of bit bashing needed to create these basic

tools for a new machine. Real bare-metal programming involves

things like building boot proms and BIOS chips, implementing

basic monitors used to test device drivers, and writing the

assemblers that will be used to write the compiler back ends that

will give the new machine a real development environment. 2.

`Programming on the bare metal' is also used to describe a style

of hand-hacking that relies on

bit-level peculiarities of a particular hardware design, esp.

tricks for speed and space optimization that rely on crocks such

as overlapping instructions (or, as in the famous case described

in The Story of Mel

(in Appendix A), interleaving of opcodes on a magnetic drum to

minimize fetch delays due to the device's rotational latency).

This sort of thing has become less common as the relative costs

of programming time and machine resources have changed, but is

still found in heavily constrained environments such as

industrial embedded systems, and in the code of hackers who just

can't let go of that low-level control. See Real Programmer.

In the world of personal computing, bare metal programming

(especially in sense 1 but sometimes also in sense 2) is often

considered a Good Thing, or at

least a necessary evil (because these machines have often been

sufficiently slow and poorly designed to make it necessary; see

ill-behaved). There, the term

usually refers to bypassing the BIOS or OS interface and writing

the application to directly access device registers and machine

addresses. "To get 19.2 kilobaud on the serial port, you need to

get down to the bare metal." People who can do this sort of thing

well are held in high regard.

The Jargon File, Version 4.2.2, 20 Aug 2000 · 第 196 / 1941 题