< previous page page_467 next page >

Page 467

VAXen /vak'sn/ n. [from 'oxen', perhaps influenced by 'vixen'] (alt. vaxen) The plural canonically used among hackers for the DEC VAX computers. "Our installation has four PDP-10s and twenty vaxen." See boxen.
vaxherd /vaks'herd/ n. obs. [from 'oxherd'] A VAX operator. The image is reinforced because VAXen actually did tend to come in herds, technically known as clusters.
vaxism /vak'sizm/ n. A piece of code that exhibits vaxocentrism in critical areas. Compare PC-ism, unixism.
vaxocentrism /vak'soh-sen'trizm/ n. [analogy with 'ethnocentrism'] A notional disease said to afflict C programmers who persist in coding according to certain assumptions that are valid (esp. under Unix) on VAXen but false elsewhere. Among these are:
1.
The assumption that dereferencing a null pointer is safe because it is all bits 0, and location 0 is readable and 0. Problem: this may instead cause an illegal-address trap on non-VAXen, and even on VAXen under OSes other than BSD Unix. Usually this is an implicit assumption of sloppy code (forgetting to check the pointer before using it), rather than deliberate exploitation of a misfeature.
2.
The assumption that characters are signed.
3.
The assumption that a pointer to any one type can freely be cast into a pointer to any other type. A stronger form of this is the assumption that all pointers are the same size and format, which means you don't have to worry about getting the casts or types correct in calls. Problem: this fails on word-oriented machines or others with multiple pointer formats.
4.
The assumption that the parameters of a routine are stored in memory, on a stack, contiguously, and in strictly ascending or descending order. Problem: this fails on many RISC architectures.
5.
The assumption that pointer and integer types are the same size, and that pointers can be stuffed into integer variables (and vice-versa) and drawn back out without being truncated or mangled. Problem: this fails on segmented architectures or word-oriented machines with funny pointer formats.
6.
The assumption that a data type of any size may begin at any byte address in memory (for example, that you can freely construct and dereference a pointer to a word- or

 
< previous page page_467 next page >

If you like this book, buy it!