Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Peter Flass Newsgroups: alt.folklore.computers,comp.os.linux.misc Subject: Re: The joy of VAX C Date: Sun, 29 Sep 2024 13:15:00 -0700 Organization: A noiseless patient Spider Lines: 48 Message-ID: <298685215.749331712.972263.peter_flass-yahoo.com@news.eternal-september.org> References: <5mqdnZuGq4lgwm_7nZ2dnZfqnPSdnZ2d@earthlink.com> <1r0e6u9.1tubjrt1kapeluN%snipeco.2@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Injection-Date: Sun, 29 Sep 2024 22:15:01 +0200 (CEST) Injection-Info: dont-email.me; posting-host="261d6c3fdcc4d46236164f6ffe3d8eb0"; logging-data="1978172"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+0IK5G33KQd3izbmWSTUz+" User-Agent: NewsTap/5.3.1 (iPad) Cancel-Lock: sha1:hvKageS/ohF4OmoxZX9HlHOtw0s= sha1:egiGcyqLTMt1UezKCQK7TY5GBJ0= Bytes: 3385 Lars Poulsen wrote: > > > On 26/09/2024 18:01, Lars Poulsen wrote: >> On 26/09/2024 13:43, Lawrence D'Oliveiro wrote: >>> On Thu, 26 Sep 2024 11:49:37 +0100, Pancho wrote: >>> >>>> On 9/26/24 11:10, Lawrence D'Oliveiro wrote: >>>>> >>>>> On Thu, 26 Sep 2024 08:42:32 +0100, Pancho wrote: >>>>> >>>>>> ... a bitch to work out how to call Vax C from Vax Pascal, or vice >>>>>> versa. >>>>> >>>>> Why would it be that hard? VAX C passed everything by value, while >>>>> Pascal let you specify descriptors, references, immediate value ... all >>>>> the options. >>>> >>>> There ware decisions to be made, like what order do you push variables >>>> onto the stack, when do you push the return address, how to interpret a >>>> Pascal String in C. >>> >>> All these things were standardized in the VAX/VMS ABI, right from the >>> beginning. >> >> IIRC, VAX C did not completely follow the standard calling conventions, >> which created some issues in mixed-language applications. > > In retrospect, I think the problems in mixing C with other languages > came down to this: > > For a C routine to be callable from another language, I suspect that the > C routine would have to declare each and every argument as a descriptor > structure, the use the descriptor to find the data. > And for a C routine to call a subroutine in another language, it would > have to build a descriptor structure for that argument. > > More trouble than anyone would want if they were used to C on any other > platform. Was that the right or the wrong choice? > An extension with a keyword like "descriptor" attached to a procedure > prototype could have made that much easier to work with! > IBM PL/I has that now. You can declare arguments descriptor/nodescriptor and byaddr/byvalue. -- Pete