( ... ) should no longer be used for arbitrary comments
parent
8dfdf52d3a
commit
5c1b5bc346
|
@ -18,7 +18,7 @@ GENERIC: extended? ( op -- ? )
|
||||||
|
|
||||||
M: object extended? drop f ;
|
M: object extended? drop f ;
|
||||||
|
|
||||||
( Register operands -- eg, ECX )
|
! Register operands -- eg, ECX
|
||||||
: define-register ( symbol num size -- )
|
: define-register ( symbol num size -- )
|
||||||
>r dupd "register" set-word-prop r>
|
>r dupd "register" set-word-prop r>
|
||||||
"register-size" set-word-prop ;
|
"register-size" set-word-prop ;
|
||||||
|
@ -87,7 +87,7 @@ PREDICATE: register register-128 "register-size" word-prop 128 = ;
|
||||||
|
|
||||||
M: register extended? "register" word-prop 7 > ;
|
M: register extended? "register" word-prop 7 > ;
|
||||||
|
|
||||||
( Addressing modes )
|
! Addressing modes
|
||||||
TUPLE: indirect base index scale displacement ;
|
TUPLE: indirect base index scale displacement ;
|
||||||
|
|
||||||
M: indirect extended? indirect-base extended? ;
|
M: indirect extended? indirect-base extended? ;
|
||||||
|
@ -190,7 +190,7 @@ M: register displacement drop f ;
|
||||||
[ sib [ , ] when* ] keep
|
[ sib [ , ] when* ] keep
|
||||||
displacement [ 4, ] when* ;
|
displacement [ 4, ] when* ;
|
||||||
|
|
||||||
( Utilities )
|
! Utilities
|
||||||
UNION: operand register indirect ;
|
UNION: operand register indirect ;
|
||||||
|
|
||||||
: operand-64? ( operand -- ? )
|
: operand-64? ( operand -- ? )
|
||||||
|
@ -261,7 +261,7 @@ UNION: operand register indirect ;
|
||||||
|
|
||||||
PREDICATE: word callable register? not ;
|
PREDICATE: word callable register? not ;
|
||||||
|
|
||||||
( Moving stuff )
|
! Moving stuff
|
||||||
GENERIC: PUSH ( op -- )
|
GENERIC: PUSH ( op -- )
|
||||||
M: register PUSH f HEX: 50 short-operand ;
|
M: register PUSH f HEX: 50 short-operand ;
|
||||||
M: integer PUSH HEX: 68 , 4, ;
|
M: integer PUSH HEX: 68 , 4, ;
|
||||||
|
@ -284,7 +284,7 @@ M: callable MOV 0 rot (MOV-I) rel-absolute-cell rel-word ;
|
||||||
M: label MOV 0 rot (MOV-I) rel-absolute-cell rel-label ;
|
M: label MOV 0 rot (MOV-I) rel-absolute-cell rel-label ;
|
||||||
M: operand MOV HEX: 89 2-operand ;
|
M: operand MOV HEX: 89 2-operand ;
|
||||||
|
|
||||||
( Control flow )
|
! Control flow
|
||||||
GENERIC: JMP ( op -- )
|
GENERIC: JMP ( op -- )
|
||||||
: (JMP) HEX: e9 , 0 4, rel-relative ;
|
: (JMP) HEX: e9 , 0 4, rel-relative ;
|
||||||
M: callable JMP (JMP) rel-word ;
|
M: callable JMP (JMP) rel-word ;
|
||||||
|
@ -321,7 +321,7 @@ M: label JUMPcc (JUMPcc) rel-label ;
|
||||||
|
|
||||||
: RET ( -- ) HEX: c3 , ;
|
: RET ( -- ) HEX: c3 , ;
|
||||||
|
|
||||||
( Arithmetic )
|
! Arithmetic
|
||||||
|
|
||||||
GENERIC: ADD ( dst src -- )
|
GENERIC: ADD ( dst src -- )
|
||||||
M: integer ADD swap BIN: 000 t HEX: 81 immediate-1/4 ;
|
M: integer ADD swap BIN: 000 t HEX: 81 immediate-1/4 ;
|
||||||
|
@ -376,7 +376,7 @@ M: integer IMUL2 swap dup reg-code t HEX: 69 immediate-1/4 ;
|
||||||
: SHR ( dst n -- ) swap BIN: 101 t HEX: c1 immediate-1 ;
|
: SHR ( dst n -- ) swap BIN: 101 t HEX: c1 immediate-1 ;
|
||||||
: SAR ( dst n -- ) swap BIN: 111 t HEX: c1 immediate-1 ;
|
: SAR ( dst n -- ) swap BIN: 111 t HEX: c1 immediate-1 ;
|
||||||
|
|
||||||
( x87 Floating Point Unit )
|
! x87 Floating Point Unit
|
||||||
|
|
||||||
: FSTPS ( operand -- ) BIN: 011 f HEX: d9 1-operand ;
|
: FSTPS ( operand -- ) BIN: 011 f HEX: d9 1-operand ;
|
||||||
: FSTPL ( operand -- ) BIN: 011 f HEX: dd 1-operand ;
|
: FSTPL ( operand -- ) BIN: 011 f HEX: dd 1-operand ;
|
||||||
|
@ -384,7 +384,7 @@ M: integer IMUL2 swap dup reg-code t HEX: 69 immediate-1/4 ;
|
||||||
: FLDS ( operand -- ) BIN: 000 f HEX: d9 1-operand ;
|
: FLDS ( operand -- ) BIN: 000 f HEX: d9 1-operand ;
|
||||||
: FLDL ( operand -- ) BIN: 000 f HEX: dd 1-operand ;
|
: FLDL ( operand -- ) BIN: 000 f HEX: dd 1-operand ;
|
||||||
|
|
||||||
( SSE multimedia instructions )
|
! SSE multimedia instructions
|
||||||
|
|
||||||
: 2-operand-sse ( dst src op1 op2 -- )
|
: 2-operand-sse ( dst src op1 op2 -- )
|
||||||
#! We swap the operands here to make everything consistent
|
#! We swap the operands here to make everything consistent
|
||||||
|
|
Loading…
Reference in New Issue