I\'ve been turning an executable into some NASM shellcode (for windows if it\'s relevant) but i\'m encountering \"error: parser: instruction expected\" errors all over the place
NASM will not accept rep movs DWORD es:[edi],DWORD ds:[esi]
From the NASM Manual; 2.2.3 NASM Doesn't Store Variable Types
NASM, by design, chooses not to remember the types of variables you declare. Whereas MASM will remember, on seeing
var dw 0, that you declared var as a word-size variable, and will then be able to fill in the ambiguity in the size of the instructionmov var,2, NASM will deliberately remember nothing about the symbol var except where it begins, and so you must explicitly codemov word [var],2.For this reason, NASM doesn't support the
LODS,MOVS,STOS,SCAS,CMPS,INS, orOUTSinstructions, but only supports the forms such asLODSB,MOVSW, andSCASD, which explicitly specify the size of the components of the strings being manipulated.
Thus the code to use is rep movsd