RISC-V instructions are 32 bits wide, so each instruction occupies 4 bytes. When jal executes, it must save the address of the instruction after the call so execution can resume there after the callee returns. The next instruction is therefore at PC + 4.
and jumps to a label, which sets the program counter to the label, i.e.:
PC←address(label)
Then, in the label, we can simply jump back using the jr instruction and ra register, which sets:
PC←[ra]
Thus:
main: jal simple # call add s0, s1, s2simple: jr ra # return