Mark Pizzolato
2018-09-22 19:46:15 UTC
Hello everyone,
We've got a problem with the VAX simulators which has come up several
times in the past and is threatening to completely break them in the future.
The original implementation of the VAX simulator code was done with
int32 variables throughout and assumed VAX like consistent behavior on
integer overflow operations. As it turns out, the C language explicitly
states that behavior of signed integers when overflow occurs is undefined.
"undefined" allows the compiler to behave in arbitrary ways when this
happens. Currently, the default compiler on OS X (clang or LLVM) produces
unexpected results when any optimization level is specified. In the future
it may also produce unexpected results for unoptimized code as well
since technically any behavior under those circumstances could happen.
I've got a reworked version of the VAX cpu simulator code which uses
uint32 throughout and as such does not encounter any potential for
undefined results. The scope of these changes affect many different places
in the simulator so some rigorous testing will be required before I'm
comfortable merging these changes into the master branch. Merely
booting VMS successfully is not a sufficient test. DEC had a tool called AXE
which was used to verify that new VAX models were consistent with the
range of expected behaviors for the whole complex instruction set. It
would be fantastic if we could get access to, or if someone with access
could work with me to validate the changed simulator.
Meanwhile, the existing VAX core instruction diagnostic EVKAA has
been helpful identifying some detailed problems with the changed
simulator. There is diagnostic documentation for several VAX processors
which describes how to start and run EVKAA which varies by model
due to different console media. The diagnostic instructions specifically
describe how to handle diagnostic failures and these instructions direct
the user to consult the EVKAA Listing for details about the specific test
that may be failing. That suggests that the Listing would be readily
available somewhere, maybe even packaged with the diagnostics on
systems with sufficiently large diagnostic media, or maybe on micro
fiche???
Does anyone have access to said listing?
Additionally, I've seen EVKAA version 7.2 and 8.0. Bob suggested that
the last version was 10.3. If someone has later versions of EVKAA.exe
they would be appreciated (along with a Listing if it is available).
Thanks.
- Mark
We've got a problem with the VAX simulators which has come up several
times in the past and is threatening to completely break them in the future.
The original implementation of the VAX simulator code was done with
int32 variables throughout and assumed VAX like consistent behavior on
integer overflow operations. As it turns out, the C language explicitly
states that behavior of signed integers when overflow occurs is undefined.
"undefined" allows the compiler to behave in arbitrary ways when this
happens. Currently, the default compiler on OS X (clang or LLVM) produces
unexpected results when any optimization level is specified. In the future
it may also produce unexpected results for unoptimized code as well
since technically any behavior under those circumstances could happen.
I've got a reworked version of the VAX cpu simulator code which uses
uint32 throughout and as such does not encounter any potential for
undefined results. The scope of these changes affect many different places
in the simulator so some rigorous testing will be required before I'm
comfortable merging these changes into the master branch. Merely
booting VMS successfully is not a sufficient test. DEC had a tool called AXE
which was used to verify that new VAX models were consistent with the
range of expected behaviors for the whole complex instruction set. It
would be fantastic if we could get access to, or if someone with access
could work with me to validate the changed simulator.
Meanwhile, the existing VAX core instruction diagnostic EVKAA has
been helpful identifying some detailed problems with the changed
simulator. There is diagnostic documentation for several VAX processors
which describes how to start and run EVKAA which varies by model
due to different console media. The diagnostic instructions specifically
describe how to handle diagnostic failures and these instructions direct
the user to consult the EVKAA Listing for details about the specific test
that may be failing. That suggests that the Listing would be readily
available somewhere, maybe even packaged with the diagnostics on
systems with sufficiently large diagnostic media, or maybe on micro
fiche???
Does anyone have access to said listing?
Additionally, I've seen EVKAA version 7.2 and 8.0. Bob suggested that
the last version was 10.3. If someone has later versions of EVKAA.exe
they would be appreciated (along with a Listing if it is available).
Thanks.
- Mark