[Info-vax] BASIC and AST routines
Arne Vajhøj
arne at vajhoej.dk
Tue Nov 23 14:31:00 EST 2021
On 11/23/2021 2:06 PM, Simon Clubley wrote:
> On 2021-11-23, Arne Vajhøj <arne at vajhoej.dk> wrote:
>> On 11/23/2021 1:37 PM, Simon Clubley wrote:
>>> On 2021-11-22, VAXman- @SendSpamHere.ORG <VAXman- at SendSpamHere.ORG> wrote:
>>>> In article <sngp1p$aud$2 at dont-email.me>, Simon Clubley <clubley at remove_me.eisner.decus.org-Earth.UFP> writes:
>>>>> On 2021-11-19, Dave Froble <davef at tsoft-inc.com> wrote:
>>>>>> I'm going to confess to curiosity. Why are R0, R1, SP, and PC passed to an AST
>>>>>> routine?
>>>>>
>>>>> Because it's another example of VMS functionality being implemented
>>>>> at way too low an abstraction level because of the need to support
>>>>> Macro-32 as an application programming language.
>>>>
>>>> BULLSHIT! If you believe that's true, please provide an illustrating example.
>>>> I'll be waiting...
>>>
>>> That VMS API passes in a stack pointer, a PC and what were originally
>>> two architecture-specific registers.
>>>
>>> That kind of information simply would not be exposed at application
>>> code level in a modern version of that API as it would (rightly) be
>>> treated as an implementation specific detail that would be handled
>>> by the compiler.
>>>
>>> That information is only needed because the lowest supported application
>>> language on VMS is Macro-32 and not C (or another comparable low-level
>>> language).
>>
>> What does the Macro-32 application developers need those
>> arguments for that the C application developers does not need
>> them for?
>
> You miss the point Arne.
>
> If C was the lowest level supported language then the compiler would
> simply have a pragma or function attribute that marked it as an AST
> routine so that the compiler would generate the required code (or not
> generate troublesome code sequences) as required.
>
> This happens all the time with C language interrupt handlers in some
> embedded environments for example.
>
> The SP/PC/R0/R1 parameters are implementation details that the person
> writing the AST routine should never see or have to deal with.
????
There are two questions here.
1) How to deal with side effects from those arguments.
Basic apparently has a problem. It could be fixed like you describe
for C. John Reagan already confirmed that.
Neither C nor Macro-32 has the need for such a fix. They just
don't access the argument and they are good.
2) Why are those arguments there?
It is not obvious to me why Macro-32 code would want to use them
any more than C or Basic code.
Arne
More information about the Info-vax
mailing list