C # в MASM трудности с FILETIME - PullRequest
1 голос
/ 23 января 2012

У меня есть две строки C #, которые я хотел бы преобразовать в сборку. Я пытался следовать этому ответу ( FILETIME до __int64 ) без получения удовлетворительного результата.

Это две строки C #

System.DateTime dt = System.DateTime.Now;
long x = dt.ToFileTime();

И из другого ответа (ссылка выше) я пришел к выводу, что это должен быть код сборки, который делает то же самое.

local fTime :FILETIME
local ticks :DWORD

invoke GetLocalTime,addr time
invoke SystemTimeToFileTime,addr time,addr fTime

xor eax,eax
xor ebx,ebx

mov eax,fTime.dwLowDateTime
mov ebx,fTime.dwHighDateTime
sal ebx,32
or ebx,eax
mov ticks,ebx

Выход C # равен 1221229007
Вывод моего asm 2882329052

C # и сборка были запущены в течение нескольких секунд друг от друга, поэтому разница не должна быть такой большой. Должно ли это?

Где я не прав?

1 Ответ

0 голосов
/ 23 января 2012
invoke GetLocalTime,addr time
invoke SystemTimeToFileTime,addr time,addr fTime

xor eax,eax
xor ebx,ebx

mov eax,fTime.dwLowDateTime
mov ebx,fTime.dwHighDateTime

sal ebx,32 ;shift HighDateTime left 32 bits
add ebx,eax ;add HighDateTime and LowDateTime together

mov edx,ebx ;edx has the ticks?

это похоже на работу, или должно быть добавление

найдено Здесь

...