[Info-vax] Whither VMS?

VAXman- at SendSpamHere.ORG VAXman- at SendSpamHere.ORG
Sun Oct 4 11:23:10 EDT 2009


In article <7irr0kF332b3gU1 at mid.individual.net>, billg999 at cs.uofs.edu (Bill Gunshannon) writes:
>In article <00A9285E.A191C0B4 at sendspamhere.org>,
>	VAXman-  @SendSpamHere.ORG writes:
>> In article <7irif8F31nq9iU12 at mid.individual.net>, Bob Eager <rde42 at spamcop.net> writes:
>>>On Sun, 04 Oct 2009 11:17:17 +0000, Bill Gunshannon wrote:
>>>
>>>>> Macro is an assembly language on steroids.  Bliss is an assembly
>>>>> language on steroids.  C needs Altoids, not steroids, because it
>>>>> stinks.  It doesn't even have a decent macro capability.
>>>> 
>>>> Because C came from the Unix environment and putting the Macro
>>>> Pre-preocessor in the compiler would have violated the paradigm Unix was
>>>> based on.  Thus, "cpp" and, of course, M4 as separate programs.
>>>
>>>It was also necessary for space reasons. The amount of address space 
>>>available on a PDP-11 with non-separate I/D space was only 64K. Of that, 
>>>8K (one page register) was set aside (AFAIR) for system communication, 
>>>leaving 56K for programs.
>>>
>>>c0 (the preprocessor) handled macros and includes. c1 was the compiler, 
>>>which generated dreadful code as there was no space for the code 
>>>generator to do optimisation. c2 was the optimiser, which did a lot of 
>>>clever stuff. I think c1 was the limiting factor, needing pretty well all 
>>>the available address space for program, and data structures.
>>>
>>>Just took a look - c1 was 15K, c1 was 21K, and c2 was 8K (approx). That's 
>>>just code and static data. c1 would need a lot of dynamically allocated 
>>>storage for symbol tables, parse trees, etc.
>> 
>> If you haven't taken notice, C isn't being used these days for PDP-11
>> programming.
> 
>Which, of course, doesn't change the Unix paradigm.  Although GNU is
>trying very hard to break even that.  Of course, when MS puts everything,
>including the kitchen sink, in a single program it is called bloatware
>and when GNU does it, it is called progress. 

Let's take a look at this...

Here, from my Alpha, is a listing of the size of the Macro32 compiler and
Macro64 assembler -- both which possess powerful macro capabilities.

ALPHA_MACRO.EXE;1       9088
MACRO64.EXE;1           5956

Here, from my Alpha, is a listing of the size of the Bliss32 compiler and
Bliss63 compiler -- both which possess powerful macro capabilities

BLISS32EN.EXE;1         9817
BLISS64EN.EXE;1         9807

Here, from my Alpha, is a listing of the size of the DECC compiler which
has pretty sucky macro capabilities.

DECC$COMPILER.EXE;1    11218

Why can Macro and Bliss have powerful macro processors in less space than
the glorified string substitution/replacement preprocessor of C???

I have, for example, a Macro32 macro I've created called: .SSINTERCEPT

        .MACRO  .SSINTERCEPT,func,srvc,type,mode,?lbl1,?lbl2
        ;++
        ; Parameters:
        ;       func: INSTALL intercept or RESTORE system service
        ;       srvc: system service to be intercepted SYS{$srvc}
        ;       type: CHM (CHange Mode) or MOC (Mode Of Caller)
        ;             SYMVEC (on IA64 ONLY)
        ;       mode: KERNEL or EXEC (required for type CHM)
        ;
        ; Implied Parameter:
        ;       name: root system service to be intercepted SYS${name}
        ; ...
        ;--

and it is invoked as:

        .SSINTERCEPT  INSTALL,$chm_mumble,CHM,KERNEL
        .SSINTERCEPT  INSTALL,$moc_mumble,MOC

Try to do something complex like the above in a C macro.

-- 
VAXman- A Bored Certified VMS Kernel Mode Hacker    VAXman(at)TMESIS(dot)ORG

  http://www.quirkfactory.com/popart/asskey/eqn2.png
  
  "Well my son, life is like a beanstalk, isn't it?"



More information about the Info-vax mailing list