! See http://factorcode.org/license.txt for BSD license.
USING: bootstrap.image.private compiler.codegen.relocation
compiler.constants compiler.units cpu.x86.assembler
-cpu.x86.assembler.operands kernel kernel.private layouts locals
-locals.backend math math.private memory namespaces sequences
+cpu.x86.assembler.operands kernel kernel.private layouts
+locals.backend math math.private namespaces sequences
slots.private strings.private vocabs ;
IN: bootstrap.x86
+: temp0/32 ( -- reg )
+ temp0 32-bit-version-of ;
+: temp1/32 ( -- reg )
+ temp1 32-bit-version-of ;
+
big-endian off
! C to Factor entry point
ds-reg bootstrap-cell ADD
! store literal on datastack
ds-reg [] temp0 MOV
-] JIT-PUSH-IMMEDIATE jit-define
+] JIT-PUSH-LITERAL jit-define
[
0 CALL f rc-relative rel-word-pic
temp1 ds-reg 0x7f [+] MOV f rc-absolute-1 rel-untagged
] PIC-LOAD jit-define
-[ temp1 tag-mask get AND ] PIC-TAG jit-define
+[ temp1/32 tag-mask get AND ] PIC-TAG jit-define
[
temp0 temp1 MOV
- temp1 tag-mask get AND
- temp1 tuple type-number CMP
+ temp1/32 tag-mask get AND
+ temp1/32 tuple type-number CMP
[ JNE ]
[ temp1 temp0 tuple-class-offset [+] MOV ]
jit-conditional
] PIC-TUPLE jit-define
[
- temp1 0x7f CMP f rc-absolute-1 rel-untagged
+ temp1/32 0x7f CMP f rc-absolute-1 rel-untagged
] PIC-CHECK-TAG jit-define
[ 0 JE f rc-relative rel-word ] PIC-HIT jit-define
[
! class = ...
temp0 temp1 MOV
- temp1 tag-mask get AND
- temp1 tag-bits get SHL
- temp1 tuple type-number tag-fixnum CMP
+ temp1/32 tag-mask get AND
+ temp1/32 tag-bits get SHL
+ temp1/32 tuple type-number tag-fixnum CMP
[ JNE ]
[ temp1 temp0 tuple-class-offset [+] MOV ]
jit-conditional
! load from stack
temp0 ds-reg [] MOV
! compute tag
- temp0 tag-mask get AND
+ temp0/32 tag-mask get AND
! tag the tag
- temp0 tag-bits get SHL
+ temp0/32 tag-bits get SHL
! push to stack
ds-reg [] temp0 MOV
] }