[M3devel] NT386GNU status
Jay
jayk123 at hotmail.com
Wed Jan 16 04:57:13 CET 2008
I believe you are perfectly capable of finding this, but fyi:
http://msdn2.microsoft.com/en-us/library/ms633558.aspx
HWND WindowFromPoint(POINT Point);
http://msdn2.microsoft.com/en-us/library/ms536119(VS.85).aspx
typedef struct tagPOINT { LONG x; LONG y; } POINT, *PPOINT;
http://dcvs.elegosoft.com/cgi-bin/cvsweb.cgi/cm3/m3-libs/m3core/src/win32/WinUser.i3?rev=1.2;content-type=text%2Fplain
<*EXTERNAL WindowFromPoint:WINAPI*>PROCEDURE WindowFromPoint (Point: POINT): HWND;
http://dcvs.elegosoft.com/cgi-bin/cvsweb.cgi/cm3/m3-libs/m3core/src/win32/WinDef.i3
POINT = RECORD x: LONG; y: LONG; END;
so 8 byte structs are passed by value.Other small sizes might be an issue as well.
Oh..
//#pragma pack(1) made no difference
#define X(n) typedef struct { char a[n]; } A ## n; void __stdcall F ## n( A##n a) { }
X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8)X(9) X(10) X(11) X(12) X(13) X(14) X(15)X(16) X(17) X(18) X(19) X(20) X(30) X(90)X(900) X(901) X(902)
Y:\>link /dump /symbols t.obj
Dump of file t.obj
COFF SYMBOL TABLE008 00000000 SECT3 notype () External | _F1 at 4009 00000010 SECT3 notype () External | _F2 at 400A 00000020 SECT3 notype () External | _F3 at 400B 00000030 SECT3 notype () External | _F4 at 400C 00000040 SECT3 notype () External | _F5 at 800D 00000050 SECT3 notype () External | _F6 at 800E 00000060 SECT3 notype () External | _F7 at 800F 00000070 SECT3 notype () External | _F8 at 8010 00000080 SECT3 notype () External | _F9 at 12011 00000090 SECT3 notype () External | _F10 at 12012 000000A0 SECT3 notype () External | _F11 at 12013 000000B0 SECT3 notype () External | _F12 at 12014 000000C0 SECT3 notype () External | _F13 at 16015 000000D0 SECT3 notype () External | _F14 at 16016 000000E0 SECT3 notype () External | _F15 at 16017 000000F0 SECT3 notype () External | _F16 at 16018 00000100 SECT3 notype () External | _F17 at 20019 00000110 SECT3 notype () External | _F18 at 2001A 00000120 SECT3 notype () External | _F19 at 2001B 00000130 SECT3 notype () External | _F20 at 2001C 00000140 SECT3 notype () External | _F30 at 3201D 00000150 SECT3 notype () External | _F90 at 9201E 00000160 SECT3 notype () External | _F900 at 90001F 00000170 SECT3 notype () External | _F901 at 904020 00000180 SECT3 notype () External | _F902 at 904
so, really, pass by value is pass by value, no matter the size.Round struct sizes up to a multiple of 4 (or word size, but this naming stuff and multiple calling conventions is only x86).
I thought beyond some small number they'd be passed by pointer and the callee would copy to its local stack..which /might/ still be the case, but it's not how the function naming works at least. I'll check what the code should and does look like.
- Jay
> From: hosking at cs.purdue.edu> > > Oh, m3ui and related are broken due to:> >> > -> linking formsedit.exe> > WinTrestle.m3:1843: undefined reference to `WindowFromPoint at 4'> >> > \mingw\bin\nm \MinGW\lib\libuser32.a | findstr WindowFromPoint> > 00000000 T _WindowFromPoint at 8> > 00000000 I __imp__WindowFromPoint at 8> >> > Maybe Tony will fix my __stdcall work. :)> > Yes, I know what needs doing to m3cc(cm3cg). Just need to do it.
_________________________________________________________________
Make distant family not so distant with Windows Vista® + Windows Live™.
http://www.microsoft.com/windows/digitallife/keepintouch.mspx?ocid=TXT_TAGLM_CPC_VideoChat_distantfamily_012008
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20080116/ebfb1791/attachment-0002.html>
More information about the M3devel
mailing list