[M3devel] Windows

Tony Hosking hosking at cs.purdue.edu
Sat Aug 18 22:18:09 CEST 2007


On Aug 17, 2007, at 10:37 PM, j k wrote:

> I have the inclination, still working on time and expertise. :)
> Summarize the layering for me? Which module calls which?
> Your mention below of the assumption of 32 bit ops at least  
> confirms what I thought I vaguely understood reading through the  
> source. It's just a bunch of pretty dense code without  
> documentation, the sort I write myself when I have the whole  
> program in my head and just need to type it all in as quickly as  
> possible. Would the idea be to use a tagged union for this stack,  
> or to split 64 bits ops into pairs of 32 bit ops?
> You know, like, does this stack translate "closely" to the  
> generated code, or not? If it does, pairs, if it does not, tagged  
> union. Probably. Similarly, like, all the register dealings need  
> some notion of pairs..? Maybe I should look at the other backend to  
> understand better, if there is an analogous bunch of code.

You'll notice that the M3CG interface has many ops that take ZType= 
[Int32, Word32, Int64, Word64].  Unfortunatly M3x86.m3 and  
Stackx86.m3 simply drop those types on the floor (or simply  
distinguishes Word32 from Int32).  I don't know the m3back code well  
at all, so I have no idea how tough it might be to smarten it up for  
Int64/Word64.

>  Anyway, I'll try at least this weekend to verify that it's  
> buildable asis, i know that's just a teeny tiny baby step, just  
> push the button to build, a monkey could do it... my expertise is  
> beyond that, but...

Should be fine now, though INTEGER and LONGINT are both 32-bits for  
NT386 target.

>
> I suspect tagged union is it, and have to churn a bunch of code to  
> check the type. ugh.
> lots of "Is64" sprinkled, or GetSize (assuming some futuristic 128  
> bit type).

Not sure...

>
> ??
>
> Thanks,
>  - Jay
>
>
>
> > CC: m3devel at elegosoft.com
> > From: hosking at cs.purdue.edu
> > Subject: Re: Windows
> > Date: Thu, 16 Aug 2007 12:47:36 -0400
> > To: jay.krell at cornell.edu; jayk123 at hotmail.com
> >
> > I should have realized of course that there is a very simple fix for
> > compilation on the NT386 target using the native m3back backend!
> > Simply make LONGINT=Int32. Jay, I have just checked in this very
> > simple fix to Target.m3 which should permit you to bootstrap a new
> > cm3 and compile the current CVS head.
> >
> > On Aug 16, 2007, at 9:42 AM, Tony Hosking wrote:
> >
> > > With the current native Windows backend (m3back) blindly assuming
> > > (without even checking!) that all integer operations are 32-bit, I
> > > wonder if anyone out there has the expertise, time, or inclination
> > > to smarten it up to handle both 32-bit and 64-bit ops. It should
> > > not be *too* hard, but I don't have the time for it now, though I
> > > would be happy to answer any questions that arise. Unfortunately,
> > > this reveals that Windows support is withering on the vine, in
> > > spite of Jay's excellent recent work. As of now, this means that
> > > Windows can only build CVS sources with the tag
> > > devel_LONGINT_start. Bridging the gap will require smartening up
> > > m3back or using the gcc-based backend.
> > >
> >
>
>
> See what you’re getting into…before you go there See it!




More information about the M3devel mailing list