[M3devel] how to write constants and deal with full range unsigned types??
Jay K
jay.krell at cornell.edu
Sat Aug 31 18:55:11 CEST 2013
This is a recurring problem esp. for Win64.
AMD64_NT gets this far:
ProcessWin32.m3:
PROCEDURE GetFileHandle(hd: DWORD; ds: FileWin32.DirectionSet): File.T =
VAR h := WinBase.GetStdHandle(hd);
END GetFileHandle;
The hd values are small negative numbers.
DWORD is unsigned 32bit.
This area doesn't seem to work well, doesn't interoperate with C well.
(and then the stack goes unaligned raising an exception)
- Jay
From: jay.krell at cornell.edu
To: m3devel at elegosoft.com
Date: Sat, 31 Aug 2013 06:17:08 +0000
Subject: [M3devel] how to write constants?
What is the right way to do this for 64bit systems?
other : INT32 = 16_FFFFFFFF;
"../src/win32/WinUser.i3", line 1321: warning: value not assignable (range fault)
WS_POPUP : INT32 = 16_80000000;
"../src/win32/WinVer.i3", line 37: warning: value not assignable (range fault)
VS_FFI_SIGNATURE : INT32 = 16_FEEF04BD;
I'm guessing..
other : INT32 := -1;
WS_POPUP = FIRST(INT32)
VS_FFI_SIGNATURE : INT32 = -17890115; (* 16_FEEF04BD *)
?
- Jay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20130831/f149c0b6/attachment-0002.html>
More information about the M3devel
mailing list