The return value for a function is always expected to be in register %eax.
So the assembler ret instruction doesn't have an operand. The return value is implicitly whatever is in register %eax.
In the following examples register %eax will be denoted by reg1
int sum(int a, int b) sum: { int ans; reg1 = b ans = a + b; add a, reg // reg = reg + a return ans; mov reg1, ans } mov ans, reg1 return