Matthew Blanchard
Matthew Blanchard

Reputation: 508

What does an @ do in assembly?

call dword ptr __imp__VirtualProtect@16

What exactly is the @ doing? Is it just part of the name of the function or? I've seen this in multiple locations and am wondering what it stands for?

Upvotes: 0

Views: 217

Answers (3)

filofel
filofel

Reputation: 1378

It means that a call to PROC _imp_VirtualProtect takes 16 bytes of parameters (like 4 DWORDs, or 2 DWORDs and 4 WORDs, or... )

The @16 is generated in the output object code by MASM when the PROC is defined (CDECL or STDCALL). The linker sees the "mangled" name.

Upvotes: 1

ikegami
ikegami

Reputation: 386706

It's part of the symbol name. The symbol name differs from the function name since function names aren't unique. See Name mangling.

Upvotes: 1

Ernest Friedman-Hill
Ernest Friedman-Hill

Reputation: 81734

Yeah, it's just part of the function name here.

Upvotes: -1

Related Questions