diff --git a/jumpforth.S b/jumpforth.S index 9ad7a2a..048900f 100644 --- a/jumpforth.S +++ b/jumpforth.S @@ -1145,8 +1145,7 @@ defcode FROMR,"R>" /* ( R: a -- a ) ( -- a ) */ defcode RFETCH,"R@" - movl (%ebp),%eax - push %eax + pushl (%ebp) NEXT /* ( R: xu ... x0 -- xu ... x0 ) ( S: u -- xu ) */ @@ -1173,10 +1172,8 @@ defcode TWOFROMR,"2R>" /* ( R: a b -- a b ) ( -- a b ) */ defcode TWORFETCH,"2R@" - movl (%ebp),%ebx - movl 4(%ebp),%eax - push %eax - push %ebx + pushl 4(%ebp) + pushl (%ebp) NEXT /* ( xu ... x1 u -- ) ( R: -- xu ... x1 u ) */ @@ -1296,15 +1293,15 @@ defcode EXECUTE /* ( ebx ecx edx esi edi ebp eax/sc -- eax/result ) */ defcode SYSCALL6 + mov %ebp,%ecx + mov %esi,%ebx pop %eax - movl 16(%esp),%ecx - movl %ebp,16(%esp) pop %ebp pop %edi - movl 12(%esp),%ebx - movl %esi,12(%esp) pop %esi pop %edx + xchg %ecx,(%esp) + xchg %ebx,4(%esp) int $0x80 pop %ebp pop %esi @@ -1313,13 +1310,13 @@ defcode SYSCALL6 /* ( ebx ecx edx esi edi eax/sc -- eax/result ) */ defcode SYSCALL5 + mov %esi,%ebx pop %eax pop %edi - movl 12(%esp),%ebx - movl %esi,12(%esp) pop %esi pop %edx pop %ecx + xchg %ebx,(%esp) int $0x80 pop %esi push %eax @@ -1327,14 +1324,14 @@ defcode SYSCALL5 /* ( ebx ecx edx esi eax/sc -- eax/result ) */ defcode SYSCALL4 + mov %esi,%edi pop %eax - movl 12(%esp),%ebx - movl %esi,12(%esp) pop %esi pop %edx pop %ecx + pop %ebx int $0x80 - pop %esi + mov %edi,%esi push %eax NEXT