[Info-vax] Native compilers

John Reagan xyzzy1959 at gmail.com
Tue Mar 8 10:10:50 EST 2022


On Monday, March 7, 2022 at 7:46:02 PM UTC-5, chris wrote:
> On 03/05/22 18:05, John Reagan wrote: 
> > As a follow-up and something else to focus on... As we continued to do more testing of the native 
> > Macro-32 compiler, we had various ACCVIOs and LIB$GET_VM errors on programs that used macros. 
> > It had no clear pattern other than perhaps something to with macro processing. It wasn't clear if it 
> > was part of the macro body scanning or macro expansion. [We're using DELTA to debug these things 
> > at the moment, the symbolic debugger is almost ready but it didn't like debugging a full MACRO.EXE 
> > image.] 
> > 
> > At some point it felt to me that perhaps the cross Macro-32 compiler was unable to compile the native 
> > Macro-32 compiler [such is life in the world of bootstrapping compilers]. We finally found the faulty instruction 
> > 
> > MOVL (R7)+,R7
> That's interesting. In theory, it's loading what R7 points to into R7, 
> but the result depends on when the autoincrement takes place, after the 
> initial (r7) load, or at the copy of R7 in the destination field ?. 
> Perhaps not all architectures follow the same path hence the bug. 
The VAX is pretty clear.  The correct behavior is:
- Load 32-bits from memory from address contained in R7, place into temporary
- Increment R7 by 4
- Store temporary in R7

We just deferred the increment until after the store by mistake.

> > 
> > MOVAL (R3)+,(R3)+
> Again depends on when the autoincremnt happens in the sequence...
VAX architecture defines the behavior exactly.  The human brain?  Not so much.  :)




More information about the Info-vax mailing list