I popped your comments into the Trac task

S

| -----Original Message-----
| From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Tanski
| Sent: 09 November 2006 20:17
| To: Simon Marlow
| Cc: [EMAIL PROTECTED]; Ian Lynagh
| Subject: Re: A few Questions ...
|
| On Nov 6, 2006, at 6:12 AM, Simon Marlow wrote:
|
| Sorry for the late reply.  I had to work through a bit of
| miscellaneous drudgery and make time to review the Native Code
| Generator (NCG).  I have some notes on the new NCG (mostly from the
| comments in the source code) and will post them on the new Commentary
| wiki page soon--or not, if you would rather start that yourself.
|
| > Peter Tanski wrote:
| >> making GHC "Windows-native,"
| >
| > I think this is a good idea, in fact I've suggested it before.
|
| I do remember your suggestion though I can't recall which message
| thread it was in just now--too bad, really, since I also (hazily)
| recall several other good points you made on this issue.  This was
| also listed under potential proposals for Internships, though I think
| an internship applicant would prefer to do something more research-
| oriented so no one should be unhappy if the job gets done.  After
| all, there seems to be a very large body of work available for
| improving the NCG (anyone interested could get a start from your
| BackEndNotes, at <http://hackage.haskell.org/trac/ghc/wiki/
| BackEndNotes>).
|
| > We wouldn't be able to compile via-C using the MS C compiler,
| > because adapting the mangler is too much work, but in any case we
| > want to move away from the mangler and use the native code
| > generator instead.
|
| Definitely.  It is too bad that the mangler is so much work--via-C
| would pass the extra linker-compatibility work to the C compiler.
| The future is native asm compilation so that would only be a
| temporary fix, anyway.
|
| > I've created a Task:
| >
| >  http://hackage.haskell.org/trac/ghc/ticket/989
|
| Right on.  The only caveat would be that the free version of MASM (an
| add-on to Visual C++ Express) is licensed for non-commercial purposes
| only.  Commercial Windows developers would have to purchase a full
| version of VC++.  The most universal solution would be to restrict
| the syntax from the pretty-printer to use assembler directives and
| macros common to both MASM and IAS (Intel ASsembler), with some
| special attention to linker differences between the two.
|
| Here are a few notes on Task #989:
|
| * Task point 1: pretty printing MS/Intel asm syntax
|
| Most of this seems to be concentrated in compiler/nativeGen/
| PprMach.hs, with a macro added to NCG.h.
|
| Depending on how much you want to interoperate directly with .NET and
| other non-C languages, the pretty-printer for assembly output may be
| only part of the work: we might add special COFF sections to compiler/
| nativeGen/AsmCodeGen.lhs.
|
| * Task point 2: compiling via Microsoft's CL compiler
|
| Fun.  Once we have gotten over point 4 (modifications to driver,
| build system, etc.).
|
| * Task point 3: drop dependencies on mingw32 functionality in the
| libraries
|
| Is there a Windows-version of readline, or a Windows-native version
| of readline available?  Even if I don't finish the replacement-GMP
| library before this, if I recall correctly, GMP has a Windows-native
| version (as a DLL, no less).  Are there any other library
| dependencies?  Windows-native versions of Perl are available.
|
| * Task point 4: modifications to driver, build system, etc.
|
| driver: DOS batch file or Perl (GHC users will need Perl installed to
| run the mangler anyway); might also be a very small C program
| (especially if you want to have a splash screen when GHC starts up).
|
| build system: small but pervasive modifications for compiler
| dependencies, etc.; as a general cleanup matter it might be nice to
| organise these sorts of dependencies to add other compilers later.
| The one problem I think people will run into is setting up the paths
| in MSYS to use the Windows tools--not a GHC-support issue, really,
| but many questions will be raised about it so we might head them off
| with lots of build-documentation.
|
| There are several related points to this project:
|
| (1) for general Windows interoperability, GHC will need to produce
| DLLs, at least: .NET or other Microsoft languages, such as VB, cannot
| include foreign code from static libraries.
|
| (2) once GHC may produce more than one type of assembler output,
| would it be too much trouble to give it a cross-compiler option, say
| "-arch i386" (compiler/nativeGen/PprMach.hs seems to use
| "IF_ARCH_..." statements) or the GCC option, "-b i386v"?  A cross-
| compile option would probably require changing the compiler/utils/
| Outputable.CodeStyle data constructor AsmStyle to contain several
| different sub-styles (Intel, ATnT) and clutter up the code in
| PprMach.hs, at least for i386_TARGET_ARCH.  Of course floatToBytes
| and doubleToBytes (converting endianness to host byte order) would
| also have to change.  (Note: the reference in PprMach.hs:2418 to
| PprAbs seems to refer to an old module, PprAbsC, which is no longer
| used, correct?)
|
| The easy, host-target-compiler-only solution might be to create a new
| macro, IF_OS_windows(x,y), in NCG.h and a new Ppr section for the
| MASM/Intel syntax in PprMach.hs.
|
|
| Cheers,
| Pete
|
|
|
|
| _______________________________________________
| Cvs-ghc mailing list
| [EMAIL PROTECTED]
| http://www.haskell.org/mailman/listinfo/cvs-ghc
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to