我有两行C#,我想转换成程序集。我试着遵循这个答案(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,ebxC#的输出是1221229007
我的asm输出是2882329052。
C#和程序集是在几秒钟内彼此运行的,所以差别不应该有那么大。应该这样吗?
我哪里错了?
发布于 2012-01-23 15:20:47
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?这似乎是可行的,或者应该是一个附加项。
找到它了这里
https://stackoverflow.com/questions/8971315
复制相似问题