I read System V ABI for i386 and AMD64. They are telling that arguments must be rounded to multiple of word size. And i dont understand why.
Here is situation. If you pass 4 char arguments to a function on i386 architecture it will take 16 bytes (4 bytes for each char argument). Isn't it more efficient to allocate only 4 bytes for all 4 arguments like it should be with local variables?
Alignment is not the answer. Because it could take 4-12 bytes padding for 16 byte stack alignment in both situiation.
pop
achar
. You can pop a word. – Manganin