When I was tech editing "Operating Systems Concepts", tenth edition, around
seven years ago, I downloaded the Linux source and searched all .c and .h
files for float and double. There aren't any. Linux does not require
floating point support, and that's likely true of other operating systems,
where performance is key. It also means that Linux can run on RISC
V without floating point support (I know the basic CPU doesn't include it).
As for microcode in Intel chips, translation of CISC instructions into its
internally used RISC is done as lookups into a table that takes up a good
portion of the chip die.
Rik
On Mon, Jul 8, 2024 at 2:40 PM Aron Insinga <aki(a)insinga.com> wrote:
See
https://www.cs.tufts.edu/~nr/cs257/archive/ronald-brender/bliss.pdf
C allowed writing Unix with a limited amount of assembly code, but CMU's
original BLISS-10 was designed to write an operating system with *no*
outside assembly code. Features like the 'MACHOP' (machine operation)
builtin function made use of the orthogonality of the PDP-10
instruction format to execute machine-specific instructions in-line.
(cf. the 'asm' extensions in some implementations of C.) The PDP-10's
36-bit word allowed single-precision floating point numbers to fit in
machine words, so it had infix operators for both integer and
single-precision floating point operations (which I presume were
adequate for an operating system).
When DEC chose an implementation language, they knew about C but it had
not yet escaped from Bell Labs. PL/I was considered, but there were
questions of whether or not it would be suitable for a minicomputer. On
the other hand, by choosing BLISS, DEC could start with the BLISS-11
cross compiler running on the PDP-10, which is described in
https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_Compiler
BLISS-11
<https://en.wikipedia.org/wiki/The_Design_of_an_Optimizing_CompilerBLISS-11>
and DEC's Common BLISS had changes necessitated by different
word lengths and architectures, including different routine linkages
such as INTERRUPT, access to machine-specific operations such as INSQTI,
and multiple-precision floating point operations using builtin functions
which used the addresses of data instead of the values.
In order to port VMS to new architectures, DEC/HP/VSI retargeted and
ported the BLISS compilers to new architectures.
What I find amazing is that they also turned the VAX MACRO assembly
language (in which some of the VMS operating system was written) into a
portable implementation language by 'compiling' the high-level CISC VAX
instructions (and addressing modes) into sequences of RISC
instructions. I believe that this is similar to how modern CPU chips
dynamically translate x86_64 instructions (or whatever) to an internal
RISC format.
- Aron
(Disclaimer: I worked at DEC for a long time and VSI for a short time,
but I wasn't responsible for the above work.)
On 7/6/24 17:32, Charles H Sauer (he/him) wrote:
On 7/6/2024 3:56 PM, John R Levine wrote:
> On Sat, 6 Jul 2024, Clem Cole wrote:
>> Other systems programming languages followed, BCPL, BLISS, PL/360
>> and even
>> B before C.
> The original version of BLISS was only for the PDP-10. DEC
> retargeted it to the PDP-11 and VAX, but I think that was after Unix
> moved to the Interdata and possibly other machines.