Registers are prefixed by a % sign, thus?eax?becomes?%eax
Operands are reversed, so?mov eax, ecx?(move ecx into eax) becomes?movl %ecx, %eax. Note the "l". This is discussed in item 4.
Constants are prefixed with a "$", so?mov eax, 50?becomes?movl $50, %eax. Constants are decimal by default; hexadecimal constants are additionally prefixed with 0x, e.g. "$0x50".
Opcodes do not have implied sizes nor does it specify the size as a separate word. For example, a 32 bit move with Intel syntax requires the "dword" specifier when it is ambigious, while GAS syntax uses suffixes. See below.
Memory references through register are in the form of "displacement(base register, offset register, scalar)". Thus the memory reference?[eax + 4 + edx*2]?is written as 4(%eax, %edx, 2). Note that parentheses are used, NOT square brackets.
Symbol names require a "$" to load the address, and no prefix to access contents. Thus the Intel/NASM syntax memory reference?mov dword eax, [symbol]?is the same movl symbol, %eax. To load the?address of?"symbol", then Intel/NASM syntax uses mov eax, symbol, while GAS uses?movl $symbol, %eax.