[Info-vax] Native compilers

Johnny Billquist bqt at softjar.se
Wed Mar 9 05:25:11 EST 2022


On 2022-03-09 01:53, chris wrote:
> Here's an example of our function exit code idiom in macro 11:
> 
> error: cmp (pc)+, pc;
> ok:    clc;
>         rts pc;
> 
> Not obvious, but neat non the less...

Yes. And that one is harmless, since it don't really matter when the 
autoincrement happens.

But actually, I would not recommend that code, since it potentially can 
fail. The idea is that on error, you would return with carry set, but 
this is not at all guaranteed in that code. It depends on where in 
memory you'd have it. CLC is 241, so code below that address would get 
it wrong. Admittedly, most code don't live that low, but anyway...

The more common way, in case you want to be "optimal" was/is:

OK:    TST (PC)+
ERROR: SEC
        RTS PC

TST always clear the carry.

   Johnny



More information about the Info-vax mailing list