<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
LONGINT on NT386 is now 64bits.<BR>
 <BR>
 <BR>
It could use more testing.<BR>
 See m3-sys\m3tests\src\p2\p227.<BR>
  Add more there. Try it on NT386 and others. Disassemble the output (or use cm3 -debug<BR>
  and look at the *log (not *.log) files in the output directory, very useful).<BR>
  It doesn't run in the automated runs though, yet.<BR>
 <BR>
 <BR>
There are two known problems:<BR>
  converting between INTEGER and LONGINT doesn't sign extend <BR>
    I'm not sure if LONGINT to INTEGER range checks either. In fact I didn't<BR>
      test any of the range checking, but it layers on top of simple compares.<BR>
 <BR>
 <BR>
  You cannot initialize a global LONGINT to other than 0; this bug is on all platforms.<BR>
   I'm hoping Tony fixes that.<BR>
   I think I need to make a change in m3back for this too though, to use<BR>
   the change I put in m3objfile (append vs. appendBytes).   <BR>
 <BR>
 <BR>
It'd be nifty if the front end could deal with the conversion.<BR>
Generate the compares to 0, oring with FFFFFFFF00000...<BR>
But I'll get to before too long either way.<BR>
 <BR>
 <BR>
There are also obvious missing optimizations, some of which<BR>
are easily fixed, some are not. In particular, some of the<BR>
code is in the "wrong" place, such as to miss out on constant folding.<BR>
Including division by constants.<BR>
The fix is just to move the code later after constant cases are handled.<BR>
I'll get to this stuff before too long.<BR>
 <BR>
 <BR>
There are a few "support" functions.<BR>
For example 64bit multiply calls out to a function.<BR>
  If you do a 64bit multiply in C, that calls a function too.<BR>
  We call the same function, where applicable.<BR>
  And m3core/src/Csupport/Common/hand.c has a few functions.<BR>
  I'm particularly nervous about extract/insert, but they seem to work.<BR>
 <BR>
 <BR>
If you find a problem and really must go back to 32bit LONGINT, see the<BR>
change below in Target.m3. Maybe make it a command line option.<BR>
 <BR>
 <BR>
 - Jay<BR><BR>
 <BR>> Date: Sun, 7 Feb 2010 16:02:32 +0000<BR>> To: m3commit@elegosoft.com<BR>> From: jkrell@elego.de<BR>> Subject: [M3commit] CVS Update: cm3<BR>> <BR>> CVSROOT: /usr/cvs<BR>> Changes by: jkrell@birch. 10/02/07 16:02:32<BR>> <BR>> Modified files:<BR>> cm3/m3-sys/m3middle/src/: Target.m3 <BR>> <BR>> Log message:<BR>> and bang: longint is now 64bits on NT386<BR>> <BR>                                       </body>
</html>