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 */
edx olddirfd,ecx oldpath, esi newdirfd,edi newpath
edx olddirfd,ecx oldpath.ptr,esi oldpath.len, edi newdirfd,ebx newpath.ptr,??? newpath.len
Also registers! Especially in syscall interface, consider eg:
If you have registers edx,ecx,esi,edi,ebx available, nul-terminated strings make this fit into: If you need separate length fields, there simply aren't enough registers: