There is no need to do the pointer arithmetic in assembly, when we
can do it in C instead. This removes the separate assembly file and
implements a tiny naked function that sets up gp and calls into C.
This ensures that the object file has all the required attribute set
without having to take care to include directives such as
.section .note.GNU-stack,"",%progbits, etc.
Computation of argv/envv is also understandable now without needing to know
RISC-V assembly code.