[M3commit] CVS Update: cm3

Jay Krell jkrell at elego.de
Tue Apr 15 10:47:49 CEST 2008


CVSROOT:	/usr/cvs
Changes by:	jkrell at birch.	08/04/15 10:47:49

Modified files:
	cm3/m3-sys/m3front/src/misc/: CG.m3 

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




More information about the M3commit mailing list