rc-absolute-cell rel-decks-offset
building get push ;
-M:: x86.32 %dispatch ( src temp -- )
- ! Load jump table base.
- temp src HEX: ffffffff [+] LEA
- building get length :> start
- 0 rc-absolute-cell rel-here
- ! Go
- temp HEX: 7f [+] JMP
- building get length :> end
- ! Fix up the displacement above
- cell alignment
- [ end start - + building get dup pop* push ]
- [ (align-code) ]
- bi ;
-
M: x86.32 pic-tail-reg EDX ;
M: x86.32 reserved-stack-space 0 ;
dup load-decks-offset
[+] card-mark <byte> MOV ;
-M:: x86.64 %dispatch ( src temp -- )
- ! Load jump table base.
- temp HEX: ffffffff MOV
- building get length :> start
- 0 rc-absolute-cell rel-here
- ! Add jump table base
- temp src ADD
- temp HEX: 7f [+] JMP
- building get length :> end
- ! Fix up the displacement above
- cell alignment
- [ end start - + building get dup pop* push ]
- [ (align-code) ]
- bi ;
-
M:: x86.64 %load-reg-param ( dst reg rep -- )
dst reg rep %copy ;
src1 src2 (%compare-imm)
label cc %branch ;
+M:: x86 %dispatch ( src temp -- )
+ ! Load jump table base.
+ temp HEX: ffffffff MOV
+ building get length :> start
+ 0 rc-absolute-cell rel-here
+ ! Add jump table base
+ temp src HEX: 7f [++] JMP
+ building get length :> end
+ ! Fix up the displacement above
+ cell alignment
+ [ end start - + building get dup pop* push ]
+ [ (align-code) ]
+ bi ;
+
M:: x86 %spill ( src rep dst -- )
dst src rep %copy ;