[openfirmware] r905 - in cpu/x86: . build

svn at openfirmware.info svn at openfirmware.info
Fri Aug 29 11:21:32 CEST 2008


Author: wmb
Date: 2008-08-29 11:21:31 +0200 (Fri, 29 Aug 2008)
New Revision: 905

Modified:
   cpu/x86/assem.fth
   cpu/x86/build/builder.dic
Log:
The assembler needs to pay attention to "long-offsets" in the
implementation of direct branching words like "je".


Modified: cpu/x86/assem.fth
===================================================================
--- cpu/x86/assem.fth	2008-08-29 05:54:16 UTC (rev 904)
+++ cpu/x86/assem.fth	2008-08-29 09:21:31 UTC (rev 905)
@@ -335,12 +335,14 @@
 
 : prefix-0f  h# 0f asm8,  ;
 
+variable long-offsets  long-offsets off
+
 \ 3MI  define branch instructions, with one or two bytes of offset.
 : 3MI	\ conditional branches
    ( op -- )	create  c,  
    ( dest -- )	does>   c@		( dest op )
       swap here 2+ - 			( op disp )
-      dup small? if			( op disp8 )
+      dup small?  long-offsets @  0= and  if	( op disp8 )
 	 swap asm8, asm8,
       else				( op disp )
 	 prefix-0f  swap h# 10 + asm8,
@@ -704,8 +706,6 @@
 
 \ Assembler version of forward/backward mark/resolve.
 
-variable long-offsets  long-offsets off
-
 : >MARK     (S -- addr )  HERE  ;  \ Address of opcode, not offset byte
 : >RESOLVE  (S addr -- )  
    long-offsets @  if




More information about the openfirmware mailing list