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