Author: Dezhi Zhao
Date: 22:26:54 09/28/05
Go up one level in this thread
The compiler is not very aware of 64 bit operands. It should be not difficult to
calculate the size of a simple structure and utilize one of the many registers
instead of using the stack.
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.26
include listing.inc
INCLUDELIB OLDNAMES
PUBLIC wmain
; Function compile flags: /Ogtpy
; File c:\documents and settings\administrator\my documents\visual studio
2005\projects\x64\x64\x64.cpp
; COMDAT wmain
_TEXT SEGMENT
argc$ = 8
q$ = 16
argv$ = 16
wmain PROC ; COMDAT
; 9 : union
; 10 : {
; 11 : unsigned __int64 qw;
; 12 : struct
; 13 : {
; 14 : unsigned lo32;
; 15 : unsigned hi32;
; 16 : };
; 17 : } q, i;
; 18 :
; 19 : q.lo32 = argc;
; 20 : q.hi32 = (unsigned) argv;
; 21 :
; 22 : i.qw = (unsigned __int64) argv | (unsigned __int64) argc << 32;
; 23 :
; 24 : return q.qw == i.qw;
xor eax, eax
movsxd r8, ecx
mov DWORD PTR q$[rsp], ecx
shl r8, 32 ; 00000020H
mov DWORD PTR q$[rsp+4], edx
or r8, rdx
cmp QWORD PTR q$[rsp], r8
sete al
; 25 : }
ret 0
wmain ENDP
_TEXT ENDS
END
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.