<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><div><font face="Calibri">Here is what you can do now, it is maghor progress.</font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">edit cm3cg.common to "unfold nested procs" </font><span style="font-family: Calibri; ">for all targets</span></div><div><br></div><div><br></div><div><font face="Calibri">cm3 -keep</font></div><div><font face="Calibri">m3cgcat m3-sys/cm3/AMD64_DARWIN/Makefile.mc -out-c:1.c</font></div><div><font face="Calibri">gcc -m64 -c 1.c</font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">I also added a direct nested function call to Makefile.m3</font></div><div><font face="Calibri">to get more coverage.</font></div><div><font face="Calibri">Makefile.m3 already included taking the address of</font></div><div><font face="Calibri">a nested function, and an exception or finally block.</font></div><div><font face="Calibri">(It appears that exception/finally blocks are given</font></div><div><font face="Calibri">a parameter by the frontend, which is the static_link,</font></div><div><font face="Calibri">whereas other nested functions are not; maybe I'm confused).</font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">It looks right as far as I've looked.</font></div><div><font face="Calibri">Granted, it is hard to see much of anything.</font></div><div><font face="Calibri">I still have to put in case_jump.</font></div><div><font face="Calibri">It is only valid C, not C++.</font></div><div><font face="Calibri">It is kind of horrendous, but we kind of knew that.</font></div><div><font face="Calibri">  Due to the low level nature of M3CG.</font></div><div><font face="Calibri">  </font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">Approximate plan:</font></div><div><font face="Calibri">  add case_jump </font></div><div><font face="Calibri">  double check if init_float is correct </font></div><div><font face="Calibri">  double check what EVAL function_call() does -- need to be sure we emit it  </font></div><div><font face="Calibri">  compile more stuff .. lots of stuff .. will likely hit problems... </font></div><div><font face="Calibri">  link stuff  -- will likely hit problems --</font></div><div><font face="Calibri">  run stuff  -- will likely hit problems .. </font></div><div><font face="Calibri">  </font></div><div><font face="Calibri">  </font></div><div><font face="Calibri">things to fix but could be postponed:</font></div><div><font face="Calibri">  a fair number of warnings, about unused helper functions, unused labels</font></div><div><font face="Calibri">  for call_indirect, I cast the function pointer to return-type (*)(),</font></div><div><font face="Calibri">  pretty awful. For C++, return_type (*)(...);</font></div><div><font face="Calibri">  </font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">when it is good and stable and usable:</font></div><div><font face="Calibri">  move static helper functions into m3core </font></div><div><font face="Calibri">  integrate it into cm3 properly </font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">much later:</font></div><div><font face="Calibri">  use C++ exception handling </font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">consider:</font></div><div><font face="Calibri"> Can C++ be used to more portably efficiently pass the static link?</font></div><div><font face="Calibri"> Or it is only useful for one level?</font></div><div><font face="Calibri"> Or it only makes a difference on NT/x86?</font></div><div><font face="Calibri"> </font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri">Point is...hopefully people can start believing in this thing.</font></div><div><font face="Calibri">Maybe provide feedback, suggest changes.</font></div><div><font face="Calibri">Still there is a ways to go.</font></div><div><font face="Calibri">It is just a step beyond "printing random stuff", in that the random stuff</font></div><div><font face="Calibri">gets a fair amount done, and is compilable, at least for one randomly selected</font></div><div><font face="Calibri">module. (Makefile.m3 is not just a trivial few lines, nor is it some comphrensive</font></div><div><font face="Calibri">stress test as far as I know.)</font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"><br></font></div><div><font face="Calibri"> - Jay</font></div><br><br>                                      </div></body>
</html>