A story related to the second nugget – MSVC has a file listing.inc containing padding macros, which is included in the assembly output the compiler produces.
The first 64-bit versions did not include an updated listing.inc. For instance a NPAD 2 would result in the 2 byte instruction mov edi, edi, which on AMD64 this has the side effect of clearing the high 32 bits of rdi.
So you could have code that worked fine, but if you produced an assembly listing and ran MASM on it, it would crash.
A story related to the second nugget – MSVC has a file
listing.inccontaining padding macros, which is included in the assembly output the compiler produces.The first 64-bit versions did not include an updated
listing.inc. For instance aNPAD 2would result in the 2 byte instructionmov edi, edi, which on AMD64 this has the side effect of clearing the high 32 bits ofrdi.So you could have code that worked fine, but if you produced an assembly listing and ran MASM on it, it would crash.