On Wednesday 03 March 2004 14:02, Sergey 'DoubleF' Zaharchenko wrote: > On Wed, 3 Mar 2004 06:23:28 +0000 > > Daniela <[EMAIL PROTECTED]> probably wrote: > > In this situation, I can only use a single-byte instruction to push 4 > > bytes, everything else costs me too much space. The only one I know of, > > is PUSHA, but it pushes too many bytes. > > Quoting from dev-handbook: > > But assembly language programmers like to shave off cycles. The above > > example requires a call/ret combination. We can eliminate it by > > pushing an extra dword: > > > > open: > > push dword mode > > push dword flags > > push dword path > > mov eax, 5 > > push eax ; Or any other dword > > int 80h > > add esp, byte 16 > > > > The 5 that we have placed in EAX identifies the kernel function, in > > this case open. > > The last time I wrote `push ebp \n mov ebp, esp' the push took 1 > byte :). `push <your_favorite_reg>' will work, as the kernel doesn't > really care for the value of the dword.
Ah yes, thanks. I read that part of the handbook multiple times and never understood what that "push eax" is good for. I was looking at an incomplete opcode list where that instruction is not even listed. _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "[EMAIL PROTECTED]"