<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>oops, this checkin comment has obvious errors regarding ge/le vs. gt/lt..hopefully the code does not :)<BR>
 <BR>
 - Jay<BR><BR><BR>

<HR id=stopSpelling>
<BR>
> Date: Tue, 15 Apr 2008 10:47:49 +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. 08/04/15 10:47:49<BR>> <BR>> Modified files:<BR>> cm3/m3-sys/m3front/src/misc/: CG.m3 <BR>> <BR>> Log message:<BR>> Rewrite set_compare for sets that fit in an integer.<BR>> m3-sys/m3tests/src/p1/p155 passes.<BR>> More tests welcome.<BR>> The generated code is very large.<BR>> For example:<BR>> <BR>> 00401A87: 8B 1D 44 A0 45 00 mov ebx,dword ptr ds:[45A044h]<BR>> 00401A8D: 89 5D FC mov dword ptr [ebp-4],ebx<BR>> 00401A90: C7 45 F0 15 00 00 mov dword ptr [ebp-10h],15h<BR>> 00<BR>> 00401A97: 23 5D F0 and ebx,dword ptr [ebp-10h]<BR>> 00401A9A: 3B 5D FC cmp ebx,dword ptr [ebp-4]<BR>> 00401A9D: 0F 94 85 6C FF FF sete byte ptr [ebp-94h]<BR>> FF<BR>> 00401AA4: 33 DB xor ebx,ebx<BR>> 00401AA6: 8A 9D 6C FF FF FF mov bl,byte ptr [ebp-94h]<BR>> 00401AAC: 83 FB 00 cmp ebx,0<BR>> 00401AAF: 0F 94 85 68 FF FF sete byte ptr [ebp-98h]<BR>> FF<BR>> 00401AB6: 33 D2 xor edx,edx<BR>> 00401AB8: 8A 95 68 FF FF FF mov dl,byte ptr [ebp-98h]<BR>> <BR>> 00401ABE: 52 push edx<BR>> <BR>> for gt or lt, pushing the value at the end (specific to context, could<BR>> be a store)<BR>> <BR>> or for ge or le, one cmp instead of two:<BR>> <BR>> 0040195C: 89 5D F0 mov dword ptr [ebp-10h],ebx<BR>> 0040195F: C7 45 FC 15 00 00 mov dword ptr [ebp-4],15h<BR>> 00<BR>> 00401966: 23 5D FC and ebx,dword ptr [ebp-4]<BR>> 00401969: 3B 5D F0 cmp ebx,dword ptr [ebp-10h]<BR>> 0040196C: 0F 94 45 98 sete byte ptr [ebp-68h]<BR>> 00401970: 33 DB xor ebx,ebx<BR>> 00401972: 8A 5D 98 mov bl,byte ptr [ebp-68h]<BR>> 00401975: 83 FB 00 cmp ebx,0<BR>> 00401978: 0F 94 45 94 sete byte ptr [ebp-6Ch]<BR>> 0040197C: 33 D2 xor edx,edx<BR>> 0040197E: 8A 55 94 mov dl,byte ptr [ebp-6Ch]<BR>> 00401981: 52 push edx<BR>> <BR>> short circuiting to do one cmp sometimes for gt/lt would be typical,<BR>> but I didn't yet look into how to set that up.<BR>> <BR><BR></body>
</html>