> If you are writing an operating system for a machine with little memory to spare, this seems like a good decision.
Also registers! Especially in syscall interface, consider eg:
int renameat(int olddirfd,char* oldpath,int newdirfd,char* newpath); /* first example I found that had 2 paths */
If you have registers edx,ecx,esi,edi,ebx available, nul-terminated strings make this fit into:
edx olddirfd,ecx oldpath,
esi newdirfd,edi newpath
If you need separate length fields, there simply aren't enough registers:
edx olddirfd,ecx oldpath.ptr,esi oldpath.len,
edi newdirfd,ebx newpath.ptr,??? newpath.len