On Sunday 10 April 2005 23:52, Matt Witherspoon wrote:
With the change, Allegro compiles great under MSVC except that there is
still the dependency on /win/asmlock.s (unless this has changed in CVS
since
I last checked). I attempted to write a C replacement, however, I totally
borked it. If someone could write a replacement (or even inline the asm),
then it should build completely in MSVC perfectly as everything else
_appears_ to be working. It should be a fairly simple fix for someone who
knows the stuff (not me).
Argh! I should try to remember these things when they are explained to me!
On a previous discussion on the subject Eric explained why this is so and
cannot be changed. I'll try to remember what he said, or I can search for
his original message later.
The bank switchers pass their arguments in a special way (using registers I
think). Writing a C only replacement for this that does it in a more
traditional way leads to an incompatible DLL between the C and C/asm
version of the library, which is obviously undesirable (I'm not sure why
this problem doesn't occur in Linux though, if indeed it doesn't). The
only work-around that I can see involves writing inlining assembler code
for MSVC, or changing the bankswitchers *now* to always use a calling
convention compatible with the C library - since we are going to release a
new stable version, the DLL ABI compatibility is not an issue.
That said, this is a major change that affects all platforms, not just
Windows and something such a large scope that we should not want to do at
this stage in 4.2 development. For 4.3, I think it makes sense to look
into changing this.
Evert
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click