You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(70) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(38) |
Feb
(4) |
Mar
(11) |
Apr
(49) |
May
(81) |
Jun
(65) |
Jul
(36) |
Aug
(57) |
Sep
(63) |
Oct
(57) |
Nov
(49) |
Dec
(41) |
2006 |
Jan
(75) |
Feb
(80) |
Mar
(10) |
Apr
(13) |
May
(100) |
Jun
(100) |
Jul
(77) |
Aug
(87) |
Sep
(80) |
Oct
(124) |
Nov
(39) |
Dec
(41) |
2007 |
Jan
(20) |
Feb
(32) |
Mar
(32) |
Apr
(43) |
May
(146) |
Jun
(40) |
Jul
(49) |
Aug
(33) |
Sep
(25) |
Oct
(19) |
Nov
(11) |
Dec
(8) |
2008 |
Jan
(4) |
Feb
(11) |
Mar
(31) |
Apr
(40) |
May
(34) |
Jun
(24) |
Jul
(39) |
Aug
(104) |
Sep
(27) |
Oct
(35) |
Nov
(34) |
Dec
(97) |
2009 |
Jan
(75) |
Feb
(29) |
Mar
(45) |
Apr
(76) |
May
(121) |
Jun
(103) |
Jul
(67) |
Aug
(28) |
Sep
(22) |
Oct
(39) |
Nov
(9) |
Dec
(15) |
2010 |
Jan
(7) |
Feb
(39) |
Mar
(40) |
Apr
(57) |
May
(67) |
Jun
(69) |
Jul
(49) |
Aug
(68) |
Sep
(22) |
Oct
(7) |
Nov
(2) |
Dec
(10) |
2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(4) |
May
(6) |
Jun
(10) |
Jul
(16) |
Aug
(23) |
Sep
(9) |
Oct
|
Nov
(28) |
Dec
(3) |
2012 |
Jan
(11) |
Feb
(10) |
Mar
(1) |
Apr
|
May
(4) |
Jun
(3) |
Jul
(3) |
Aug
(4) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
2013 |
Jan
|
Feb
(7) |
Mar
(30) |
Apr
(4) |
May
(4) |
Jun
(8) |
Jul
(10) |
Aug
(4) |
Sep
|
Oct
(2) |
Nov
(24) |
Dec
(13) |
2014 |
Jan
(7) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(9) |
Jun
|
Jul
(3) |
Aug
(9) |
Sep
|
Oct
(2) |
Nov
|
Dec
(3) |
2015 |
Jan
(4) |
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(5) |
Sep
(1) |
Oct
(4) |
Nov
(7) |
Dec
(39) |
2016 |
Jan
(17) |
Feb
(2) |
Mar
(2) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(2) |
2017 |
Jan
|
Feb
(3) |
Mar
|
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(2) |
2018 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2025 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Jos v.d.V. <jo...@us...> - 2015-12-02 17:16:23
|
Update of /cvsroot/win32forth/win32forth/src/lib/OpenGl In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv3030/OpenGl Log Message: Directory /cvsroot/win32forth/win32forth/src/lib/OpenGl added to the repository |
From: Jos v.d.V. <jo...@us...> - 2015-11-15 13:09:32
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv7188 Modified Files: 486ASM.F Log Message: Jos: There were still too many restrictions. Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** 486ASM.F 9 Nov 2015 13:46:28 -0000 1.20 --- 486ASM.F 15 Nov 2015 13:09:30 -0000 1.21 *************** *** 1832,1847 **** : no-xmm-move ( opcode - opcode flag ) dup &no-xmm-move not-any= ; - numbers: &xmm-to-m ( - adr n ) 13 17 ;bytes - numbers: &no-xmm-to-m ( - adr n ) 1 4 C0 C1 0B ;bytes ( - adr ) - - : xmm-to-m ( opcode - opcode flag ) dup &xmm-to-m any= ; \ case: movhpd movlpd - : no-xmm-to-m ( - flag ) &no-xmm-to-m not-any-mod-r/m= ; - - numbers: &m-to-xmm ( - adr n ) 12 16 13 3 ;bytes - numbers: &no-m-to-xmm ( - adr n ) 1 3 4 8 9 0A 0B C0 C1 C8 ;bytes - - : m-to-xmm ( opcode - opcode flag ) dup &m-to-xmm any= ; \ case: movhpd movlpd - : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; - numbers: &r32 ( - adr n ) CB D3 D9 DA DB ;bytes numbers: ¬-to-r32? ( - adr n ) DA C7 CF D7 DF ;bytes --- 1832,1835 ---- *************** *** 1861,1866 **** no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb - xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." - m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." code-c, compile-fields ; --- 1849,1852 ---- |
From: Jos v.d.V. <jo...@us...> - 2015-11-09 13:48:01
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv30838 Modified Files: DIS486.F Log Message: Jos: Extended for dpps and dppd. Index: DIS486.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/DIS486.F,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** DIS486.F 19 Jan 2015 13:29:37 -0000 1.8 --- DIS486.F 9 Nov 2015 13:47:59 -0000 1.9 *************** *** 1428,1431 **** --- 1428,1439 ---- then ; + : ?dis-3Aext ( adr -- adr' ) + count + case + $40 of .s" dpps" xm-r,r/m ::imm8 endof + $41 of .s" dppd" xm-r,r/m ::imm8 endof + endcase + ; + : ?dis-660f ( adr flag -- adr' flag ) if save-adr 2 + count *************** *** 1443,1446 **** --- 1451,1455 ---- $2e of .s" ucomisd" xm-r,r/m endof $2f of .s" comisd" xm-r,r/m endof + $3a of ?dis-3Aext endof $51 of .s" sqrtpd" xm-r,r/m endof $54 of .s" sqrtpd" xm-r,r/m endof |
From: Jos v.d.V. <jo...@us...> - 2015-11-09 13:46:30
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv30778 Modified Files: 486ASM.F 586ASMCM.f Log Message: Jos: Adapted for dpps and dppd Solved a bug for imm8 of shufpd Added a note for SSE instructions Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** 586ASMCM.f 26 Jan 2015 13:55:57 -0000 1.12 --- 586ASMCM.f 9 Nov 2015 13:46:28 -0000 1.13 *************** *** 3,6 **** --- 3,7 ---- \ Also floating-point extensions for P6 or better gah \ Januari 2015, Added SSE instructions for SIMD. + \ Note: Not all possible syntax errors are recognized of the SSE instructions. also assembler also asm-hidden definitions *************** *** 32,35 **** --- 33,40 ---- 0x66 pre-dxmm-compile ; + : dpp-compile ( param -- | x \ param -- | x \ x \ param -- ) + 0x66 code-c, 0x0F code-c, 0x3A code-c, true no-do-disp data-! + true has-xmm-offset? data-! (xmm-compile) ; + : movd-compile ( param -- | x \ param -- | x \ x \ param -- ) 0x66 code-c, 0x0F code-c, (movd-compile) ; *************** *** 60,63 **** --- 65,75 ---- 0x66 code-c, true no-do-disp data-! xmm-compile ; + : shufps-compile ( param -- | x \ param -- | x \ x \ param -- ) + true has-xmm-offset? data-! xmm-compile-no-disp ; + + : shufpd-compile ( param -- | x \ param -- | x \ x \ param -- ) + true has-xmm-offset? data-! dxmm-compile-no-disp ; + + also forth *************** *** 269,274 **** 0xC207 ' cmpsd-compile opcode cmpordsd ! 0xC6 ' xmm-compile-no-disp opcode shufps ! 0xC6 ' dxmm-compile-no-disp opcode shufpd 0xD7 ' 66-dxmm-compile opcode pmovmskb --- 281,286 ---- 0xC207 ' cmpsd-compile opcode cmpordsd ! 0xC6 ' shufps-compile opcode shufps ! 0xC6 ' shufpd-compile opcode shufpd 0xD7 ' 66-dxmm-compile opcode pmovmskb *************** *** 277,280 **** --- 289,295 ---- 0xE6 ' F2-dxmm-compile opcode cvtpd2dq + 0x40 ' dpp-compile opcode dpps + 0x41 ' dpp-compile opcode dppd + in-previous only forth also forth definitions Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** 486ASM.F 24 Oct 2015 15:24:30 -0000 1.19 --- 486ASM.F 9 Nov 2015 13:46:28 -0000 1.20 *************** *** 543,547 **** variable addmode ( addressing mode flags ) variable xmm/mmx-prefix \ xmm (2) or mmx (1) or neither (0) regs used ) ! variable no-do-disp ( No change to the mod-r/m byte ) : reset-vars ( store 0 into all instruction coding variables ) --- 543,548 ---- variable addmode ( addressing mode flags ) variable xmm/mmx-prefix \ xmm (2) or mmx (1) or neither (0) regs used ) ! variable has-xmm-offset? ( forcing 8bit for shufps shufpd dpps dppd ) ! variable no-do-disp ( No change to the mod-r/m byte ) : reset-vars ( store 0 into all instruction coding variables ) *************** *** 550,559 **** 0 sp-save data-! 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! 0 xmm/mmx-prefix data-! ; : reset-for-next-instr ( store a 0 into intermediate coding variables ) 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! ; ( set/reset mode bits ) --- 551,562 ---- 0 sp-save data-! 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! 0 xmm/mmx-prefix data-! ! 0 has-xmm-offset? data-! ; : reset-for-next-instr ( store a 0 into intermediate coding variables ) 0 offset-sv data-! 0 immed-sv data-! 0 dt-size data-! 0 ad-size data-! 0 rtype data-! 0 maxtype data-! 0 mod-r/m data-! ! 0 s-i-b data-! 0 addmode data-! ! 0 has-xmm-offset? data-! ; ( set/reset mode bits ) *************** *** 1189,1199 **** ( /r value -- ) 8* mod-r/m data-@ [ 7 8* -1 xor ] literal and or mod-r/m data-! ; - : disp, ( compile the displacement ) ( -- ) ! has-offset? if offset-sv data-@ dup abs 7f > has-full-off? or ! if ad-size data-@ 16bit = if 16b-abs register-ref code-w, else 32b-abs ! register-ref code-d, then else 8b-abs register-ref code-c, then then ; ! : default-8bit ( change a zero size to 8bit ) ( size -- size' ) --- 1192,1209 ---- ( /r value -- ) 8* mod-r/m data-@ [ 7 8* -1 xor ] literal and or mod-r/m data-! ; : disp, ( compile the displacement ) ( -- ) ! has-xmm-offset? data-@ ! if offset-sv data-@ 8b-abs register-ref code-c, ! else has-offset? ! if offset-sv data-@ dup abs 7f > has-full-off? or ! if ad-size data-@ 16bit = ! if 16b-abs register-ref code-w, ! else 32b-abs register-ref code-d, ! then ! else 8b-abs register-ref code-c, ! then ! then ! then ; : default-8bit ( change a zero size to 8bit ) ( size -- size' ) *************** *** 1822,1833 **** : no-xmm-move ( opcode - opcode flag ) dup &no-xmm-move not-any= ; - numbers: &xmm-to-xmm ( - adr n ) C2 C6 ;bytes - - : xmm-to-xmm ( opcode - opcode flag ) dup &xmm-to-xmm any= ; \ case: cmpss shufps shufpd - - numbers: &no-xmm-to-xmm? ( - adr n ) FC CA ;bytes - - : no-xmm-to-xmm? ( - flag ) &no-xmm-to-xmm? not-any-mod-r/m= ; - numbers: &xmm-to-m ( - adr n ) 13 17 ;bytes numbers: &no-xmm-to-m ( - adr n ) 1 4 C0 C1 0B ;bytes ( - adr ) --- 1832,1835 ---- *************** *** 1857,1861 **** endif endif ?noimmed - xmm-to-xmm no-xmm-to-xmm? and asm-abort" Operand must be xmmreg,xmmreg" no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb --- 1859,1862 ---- |
From: Jos v.d.V. <jo...@us...> - 2015-11-06 13:42:02
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25629 Removed Files: LoadProject.f Log Message: Jos: The removal of LoadProject.f --- LoadProject.f DELETED --- |
From: Jos v.d.V. <jo...@us...> - 2015-11-06 13:39:05
|
Update of /cvsroot/win32forth/win32forth/Help In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25339/Help Modified Files: HelpScope.f Log Message: Jos: Removing LoadProject. This will no longer create the file LatestProject.dat F12 in the console will be free again. Index: HelpScope.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Help/HelpScope.f,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** HelpScope.f 13 Aug 2014 11:14:59 -0000 1.12 --- HelpScope.f 6 Nov 2015 13:39:02 -0000 1.13 *************** *** 206,210 **** SrcScope: src\keysave.f \ keyboard macro recording SrcScope: src\tools\tools.f \ various tool's - SrcScope: src\lib\LoadProject.f \ Loads latest project \ SrcScope: src\console\ConsoleMenu.f \ console menu bar \ useless \ SrcScope: src\console\ConsoleStatBar.f \ console status bar \ useless --- 206,209 ---- *************** *** 292,296 **** SrcScope: src\lib\ImageWindow.f - SrcScope: src\lib\LoadProject.f \ SrcScope: src\lib\MessageLoop.f \ this file is deprecated and empty \ SrcScope: src\lib\SendMessage.f \ this file is deprecated and empty --- 291,294 ---- |
From: Jos v.d.V. <jo...@us...> - 2015-11-01 15:45:15
|
Update of /cvsroot/win32forth/win32forth/src/lib/fmacro In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv10692 Modified Files: FMACRO.F Log Message: Jos: Adapted the documentation Index: FMACRO.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/fmacro/FMACRO.F,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** FMACRO.F 1 Nov 2015 15:07:00 -0000 1.8 --- FMACRO.F 1 Nov 2015 15:45:13 -0000 1.9 *************** *** 68,81 **** test2 decompiles as follows: see test2 ! TEST2 IS CODE ! 4007C 53 push ebx ! 4007D 8B9F74000400 mov ebx , AA [edi] ! 40083 53 push ebx ! 40084 C7C302000000 mov ebx , # 2 ! 4008A 8BCA mov ecx , edx ! 4008C 58 pop eax ! 4008D F7E3 mul ebx ! 4008F 8BD8 mov ebx , eax ! 40091 8BD1 mov edx , ecx The coding overhead is a small disadvantage. --- 68,83 ---- test2 decompiles as follows: see test2 ! TEST2 IS CODE ! ( $404150 53 ) push ebx ! ( $404151 8B1DE8A44400 ) mov ebx, $44A4E8 ( AA+$0 ) ! ( $404157 53 ) push ebx ! ( $404158 C7C302000000 ) mov ebx, # $2 ! ( $40415E 58 ) pop eax ! ( $40415F 83ED04 ) sub ebp, # $4 ! ( $404162 895500 ) mov $0 ( $400000+$FFBFFFFC ) [ebp] edx ! ( $404165 F7E3 ) mul ebx ! ( $404167 8BD8 ) mov ebx, eax ! ( $404169 8B5500 ) mov edx, $0 ( $400000+$FFBFFFFC ) [ebp] ! ( $40416C 83C504 ) add ebp, # $4 The coding overhead is a small disadvantage. *************** *** 123,127 **** see test TEST IS CODE ! 404D8 039FD0040400 add ebx , T1 [edi] In high level forth you would need: --- 125,129 ---- see test TEST IS CODE ! ( $40417C 031DF0A44400 ) add ebx, $44A4F0 ( T1+$0 ) In high level forth you would need: *************** *** 174,177 **** --- 176,181 ---- December 18th, 2011 addr@+ addr@< faddr@ faddr! are now also able to use the user-area January 17th, 2012 Bugfix in FLD_extended|double_[edx] and FSTP_extended|double_[edx] + November 1st, 2015 Removed EDI + )) |
From: Jos v.d.V. <jo...@us...> - 2015-11-01 15:07:02
|
Update of /cvsroot/win32forth/win32forth/src/lib/fmacro In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv8378 Modified Files: FMACRO.F Log Message: Jos: Removed edi Index: FMACRO.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/fmacro/FMACRO.F,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** FMACRO.F 28 Oct 2015 11:19:47 -0000 1.7 --- FMACRO.F 1 Nov 2015 15:07:00 -0000 1.8 *************** *** 188,191 **** --- 188,192 ---- SYS-WARNING-OFF + : qalign code-here -11 and 12 + code-here - allot ; : 32align code-here -31 and 32 + code-here - allot ; *************** *** 222,228 **** B/FLOAT 10 = ! [IF] $AFDB to FLD_extended|double $BFDB to FSTP_extended|double $AADB to FLD_extended|double_[edx] $BADB to FSTP_extended|double_[edx] ! [ELSE] $87DD to FLD_extended|double $9FDD to FSTP_extended|double $82DD to FLD_extended|double_[edx] $9ADD to FSTP_extended|double_[edx] --- 223,229 ---- B/FLOAT 10 = ! [IF] $2DDB to FLD_extended|double $3DDB to FSTP_extended|double $AADB to FLD_extended|double_[edx] $BADB to FSTP_extended|double_[edx] ! [ELSE] $05DD to FLD_extended|double $1DDD to FSTP_extended|double $82DD to FLD_extended|double_[edx] $9ADD to FSTP_extended|double_[edx] *************** *** 263,267 **** : drop ( n -- ) pop ebx code-here to poped_ebx a;; ! : 2drop ( n -- ) drop drop a;; : dup ( n -- n n ) push ebx a;; \ do not use: push_ebx : nip ( n1 n2 -- n2 ) pop_eax a;; --- 264,268 ---- : drop ( n -- ) pop ebx code-here to poped_ebx a;; ! : 2drop ( n -- ) drop drop a;; : dup ( n -- n n ) push ebx a;; \ do not use: push_ebx : nip ( n1 n2 -- n2 ) pop_eax a;; *************** *** 405,424 **** : @ ( a1 -- n1 ) ! mov ebx, 0 [ebx] [edi] a;; : c@ ( a1 -- c1 ) ! mov bl, 0 [ebx] [edi] ! and ebx, # 0xFF a;; : c! ( c1 a1 -- ) pop_eax ! mov 0 [ebx] [edi], al drop a;; : r_nos_c! ( a1 -- ) ( r: n1 - n1) mov eax, 0 [ebp] ! mov 0 [ebx] [edi], al drop a;; --- 406,424 ---- : @ ( a1 -- n1 ) ! mov ebx, [ebx] a;; : c@ ( a1 -- c1 ) ! movzx ebx, byte ptr 0 [ebx] a;; : c! ( c1 a1 -- ) pop_eax ! mov 0 [ebx], al drop a;; : r_nos_c! ( a1 -- ) ( r: n1 - n1) mov eax, 0 [ebp] ! mov 0 [ebx], al drop a;; *************** *** 426,457 **** : r_nos_! ( a1 -- ) ( r: n1 - n1) mov eax, 0 [ebp] ! mov 0 [ebx] [edi], eax drop a;; : b_nos_c! ( a1 -- ) ! mov 0 [ebx] [edi], dl drop a;; : b_nos_! ( a1 -- ) ! mov 0 [ebx] [edi], edx drop a;; : a_nos_c! ( a1 -- ) ! mov 0 [ebx] [edi], cl drop a;; : a_nos_! ( a1 -- ) ! mov 0 [ebx] [edi], ecx drop a;; : ! ( a1 -- ) ( r: n1 - n1) ! pop_eax ! mov 0 [ebx] [edi], eax ! drop a;; --- 426,456 ---- : r_nos_! ( a1 -- ) ( r: n1 - n1) mov eax, 0 [ebp] ! mov 0 [ebx], eax drop a;; : b_nos_c! ( a1 -- ) ! mov 0 [ebx], dl drop a;; : b_nos_! ( a1 -- ) ! mov 0 [ebx], edx drop a;; : a_nos_c! ( a1 -- ) ! mov 0 [ebx], cl drop a;; : a_nos_! ( a1 -- ) ! mov 0 [ebx], ecx drop a;; : ! ( a1 -- ) ( r: n1 - n1) ! pop [ebx] ! pop ebx a;; *************** *** 518,524 **** : 2@ ( a1 -- d1 ) ! mov eax, 4 [ebx] [edi] ! mov ebx, 0 [ebx] [edi] ! push_eax a;; --- 517,522 ---- : 2@ ( a1 -- d1 ) ! push 4 [ebx] ! mov ebx, 0 [ebx] a;; *************** *** 663,667 **** : (faddr@+ \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos+addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $87DC code-w, code-, [ previous ] [ELSE] faddr@ f+ [THEN] a;; --- 661,665 ---- : (faddr@+ \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos+addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $05DC code-w, code-, [ previous ] [ELSE] faddr@ f+ [THEN] a;; *************** *** 703,707 **** : (faddr@/ \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos/addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $BFDC code-w, code-, [ previous ] [ELSE] faddr@ f/ [THEN] a;; --- 701,705 ---- : (faddr@/ \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos/addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $3DDC code-w, code-, [ previous ] [ELSE] faddr@ f/ [THEN] a;; *************** *** 723,727 **** : (faddr@* \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos-addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $8FDC code-w, code-, [ previous ] [ELSE] faddr@ f* [THEN] a;; --- 721,725 ---- : (faddr@* \ Compiletime: ( name-fvariable|addr - ) Runtime: ( fhw: -- ftos-addrf@ ) [ B/FLOAT 8 = ] ! [IF] [ also forth ] $0DDC code-w, code-, [ previous ] [ELSE] faddr@ f* [THEN] a;; *************** *** 788,801 **** user? if [ also forth ] $03 code-c, $9A code-c, TCB - code-, [ previous ] ! else [ also forth ] $03 code-c, $9F code-c, code-, [ previous ] then a;; : @to_a+ ( n - ) \ In A will be n+a ! [ also forth ] $03 code-c, $8F code-c, code-, [ previous ] a;; : @to_b+ ( n - ) \ In B will be n+a ! [ also forth ] $03 code-c, $97 code-c, code-, [ previous ] a;; --- 786,799 ---- user? if [ also forth ] $03 code-c, $9A code-c, TCB - code-, [ previous ] ! else [ also forth ] $03 code-c, $1D code-c, code-, [ previous ] then a;; : @to_a+ ( n - ) \ In A will be n+a ! [ also forth ] $03 code-c, $0D code-c, code-, [ previous ] a;; : @to_b+ ( n - ) \ In B will be n+a ! [ also forth ] $03 code-c, $15 code-c, code-, [ previous ] a;; *************** *** 803,807 **** user? if [ also forth ] $53 code-c, $8B code-c, $9A code-c, TCB - code-, [ previous ] ! else [ also forth ] $53 code-c, $8B code-c, $9F code-c, code-, [ previous ] then a;; --- 801,805 ---- user? if [ also forth ] $53 code-c, $8B code-c, $9A code-c, TCB - code-, [ previous ] ! else [ also forth ] $53 code-c, $8B code-c, $1D code-c, code-, [ previous ] then a;; *************** *** 810,814 **** user? if [ also forth ] $89 code-c, $9A code-c, TCB - code-, $5B code-c, [ previous ] ! else [ also forth ] $89 code-c, $9F code-c, code-, $5B code-c, [ previous ] then a;; --- 808,812 ---- user? if [ also forth ] $89 code-c, $9A code-c, TCB - code-, $5B code-c, [ previous ] ! else [ also forth ] $89 code-c, $1D code-c, code-, $5B code-c, [ previous ] then a;; *************** *** 817,821 **** user? if [ also forth ] $3B code-c, $9A code-c, TCB - code-, $C7 code-c, $C3 code-c, 0 code-, $1B code-c, $DB code-c, [ previous ] ! else [ also forth ] $3B code-c, $9F code-c, code-, $C7 code-c, $C3 code-c, 0 code-, $1B code-c, $DB code-c, [ previous ] then a;; --- 815,819 ---- user? if [ also forth ] $3B code-c, $9A code-c, TCB - code-, $C7 code-c, $C3 code-c, 0 code-, $1B code-c, $DB code-c, [ previous ] ! else [ also forth ] $3B code-c, $1D code-c, code-, $C7 code-c, $C3 code-c, 0 code-, $1B code-c, $DB code-c, [ previous ] then a;; |
From: Jos v.d.V. <jo...@us...> - 2015-10-28 11:19:49
|
Update of /cvsroot/win32forth/win32forth/src/lib/fmacro In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv21813 Modified Files: FMACRO.F Log Message: Jos: For Parallel: Index: FMACRO.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/fmacro/FMACRO.F,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** FMACRO.F 17 Jan 2012 21:40:58 -0000 1.6 --- FMACRO.F 28 Oct 2015 11:19:47 -0000 1.7 *************** *** 988,992 **** \IN-SYSTEM-OK : execute_exit ( xt - ) postpone execute postpone exit ; immediate ! variable loc_a variable loc_b : a>nos ( n -- n a ) loc_a @ swap ; --- 988,992 ---- \IN-SYSTEM-OK : execute_exit ( xt - ) postpone execute postpone exit ; immediate ! cell newuser loc_a cell newuser loc_b : a>nos ( n -- n a ) loc_a @ swap ; |
From: Jos v.d.V. <jo...@us...> - 2015-10-24 15:24:33
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20261 Modified Files: 486ASM.F Log Message: Jos: The use of a memory destination was blocked when xmm registers were used. Now the illegal use of 32-bits registers can not be checked EG: code Demo ( &foo1 &foo2 -- ) movapd xmm0, eax movapd xmm0, xmm0 next c; see Demo \ Shows: DEMO IS CODE ( $4041D8 660F28C0 ) movapd xmm0, xmm0 ( $4041DC 660F28C0 ) movapd xmm0, xmm0 Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** 486ASM.F 16 Feb 2015 15:39:21 -0000 1.18 --- 486ASM.F 24 Oct 2015 15:24:30 -0000 1.19 *************** *** 1842,1853 **** : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; ! numbers: &r32 ( - adr n ) C0 C1 C2 C3 D3 CB D9 DA DB ;bytes ! numbers: &no-r32-check ( - adr n ) 11 12 D7 13 16 17 57 58 ;bytes numbers: ¬-to-r32? ( - adr n ) DA C7 CF D7 DF ;bytes : r32? ( - flag ) mod-r/m data-@ &r32 any= ; - : no-r32-check ( opcode - opcode flag ) dup &no-r32-check not-any= ; : not-to-r32? ( - flag ) ¬-to-r32? not-any-mod-r/m= ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) --- 1842,1852 ---- : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; ! numbers: &r32 ( - adr n ) CB D3 D9 DA DB ;bytes numbers: ¬-to-r32? ( - adr n ) DA C7 CF D7 DF ;bytes : r32? ( - flag ) mod-r/m data-@ &r32 any= ; : not-to-r32? ( - flag ) ¬-to-r32? not-any-mod-r/m= ; + also forth : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 1861,1868 **** no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb ! ( \) xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." ! no-r32-check r32? and asm-abort" Operand r32 not allowed." ! code-c, compile-fields ; : (movd-compile) ( param -- | x \ param -- | x \ x \ param -- ) --- 1860,1866 ---- no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb ! xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." ! code-c, compile-fields ; : (movd-compile) ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 1875,1878 **** --- 1873,1878 ---- code-c, compile-fields ; + previous + ( the instructions ) in-asm |
From: Jos v.d.V. <jo...@us...> - 2015-10-22 15:40:15
|
Update of /cvsroot/win32forth/win32forth/src/lib In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv20445 Modified Files: MultiTaskingClass.f Log Message: Jos: The new SubmitRanges: gives a better distribution. That may often result in a faster program. Thanks to Herbert. Index: MultiTaskingClass.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/lib/MultiTaskingClass.f,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** MultiTaskingClass.f 15 Aug 2014 13:29:52 -0000 1.8 --- MultiTaskingClass.f 22 Oct 2015 15:40:13 -0000 1.9 *************** *** 67,70 **** --- 67,74 ---- \ REMOVED &StkParams Waitobject + \ 22-10-2015 Most important change: + \ Now SubmitRanges: gives a better distribution. + \ That may often result in a faster program. + \ Thanks to Herbert. *************** *** 1124,1131 **** :M SubmitRanges: { cfa High low _#threads -- } \ 3 \ *G Distributes and submits all the ranges to various jobs. ! High low - _#threads / dup 0> if _#threads 1- 1 max 0 ! do High dup>r over - dup to High r> swap cfa SubmitRange: Self ! loop then drop --- 1128,1135 ---- :M SubmitRanges: { cfa High low _#threads -- } \ 3 \ *G Distributes and submits all the ranges to various jobs. ! High low - _#threads 2/ + _#threads / dup 0> if _#threads 1- 1 max 0 ! do High dup>r over - dup to High r> swap cfa SubmitRange: Self ! loop then drop |
From: Jos v.d.V. <jo...@us...> - 2015-09-02 12:30:13
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12999 Modified Files: Winversion.f Log Message: Jos: GetVersionEx is not supported by windows 8.1 Index: Winversion.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Winversion.f,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Winversion.f 19 Aug 2015 10:53:22 -0000 1.2 --- Winversion.f 2 Sep 2015 12:30:11 -0000 1.3 *************** *** 67,71 **** : GetVersionWin8+ ( -- winver ) s" CurrentMajorVersionNumber" WNT\Version ! GetRegistryEntry 0> if @ 4 + else drop -2 then ; external --- 67,71 ---- : GetVersionWin8+ ( -- winver ) s" CurrentMajorVersionNumber" WNT\Version ! GetRegistryEntry 0> if @ 4 + else drop WIN8 then ; external |
From: Jos v.d.V. <jo...@us...> - 2015-08-21 12:50:32
|
Update of /cvsroot/win32forth/win32forth/Templates In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv15290 Modified Files: MinimalWindow.f Log Message: Jos: Removing leftover. Index: MinimalWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Templates/MinimalWindow.f,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MinimalWindow.f 21 Aug 2015 12:44:08 -0000 1.4 --- MinimalWindow.f 21 Aug 2015 12:50:30 -0000 1.5 *************** *** 41,46 **** ApplicationBar SetMenuBar: MinimalWindow ; - \ debug AddAppIcon? - turnkey? [if] ' Minimal turnkey MinimalWindow.exe --- 41,44 ---- |
From: Jos v.d.V. <jo...@us...> - 2015-08-21 12:44:10
|
Update of /cvsroot/win32forth/win32forth/Templates In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv14954 Modified Files: MinimalWindow.f SplitterWindow2.f TreeViewInSplitWindow.f Log Message: Jos: Minor optimalization Index: SplitterWindow2.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Templates/SplitterWindow2.f,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SplitterWindow2.f 14 Feb 2012 13:59:21 -0000 1.3 --- SplitterWindow2.f 21 Aug 2015 12:44:08 -0000 1.4 *************** *** 153,158 **** :M On_Done: ( h m w l -- res ) - 0 call PostQuitMessage drop On_Done: super 0 ;M --- 153,158 ---- :M On_Done: ( h m w l -- res ) On_Done: super 0 + bye ;M *************** *** 166,174 **** : main ( -- ) Start: SplitterWindow ! ApplicationBar SetMenuBar: SplitterWindow ! ! turnkey? if MessageLoop bye then ; ! turnkey? not [if] ' main turnkey App.exe s" WIN32FOR.ICO" s" App.exe" AddAppIcon --- 166,172 ---- : main ( -- ) Start: SplitterWindow ! ApplicationBar SetMenuBar: SplitterWindow ; ! turnkey? [if] ' main turnkey App.exe s" WIN32FOR.ICO" s" App.exe" AddAppIcon Index: TreeViewInSplitWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Templates/TreeViewInSplitWindow.f,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TreeViewInSplitWindow.f 14 Feb 2012 13:59:21 -0000 1.5 --- TreeViewInSplitWindow.f 21 Aug 2015 12:44:08 -0000 1.6 *************** *** 271,276 **** :M On_Done: ( h m w l -- res ) - 0 call PostQuitMessage drop On_Done: super 0 ;M --- 271,276 ---- :M On_Done: ( h m w l -- res ) On_Done: super 0 + bye ;M *************** *** 284,289 **** : main ( -- ) Start: SplitterWindow ! ApplicationBar SetMenuBar: SplitterWindow ! turnkey? if MessageLoop bye then ; turnkey? [if] --- 284,288 ---- : main ( -- ) Start: SplitterWindow ! ApplicationBar SetMenuBar: SplitterWindow ; turnkey? [if] Index: MinimalWindow.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/Templates/MinimalWindow.f,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MinimalWindow.f 14 Feb 2012 13:59:21 -0000 1.3 --- MinimalWindow.f 21 Aug 2015 12:44:08 -0000 1.4 *************** *** 1,6 **** - Needs Resources.f - Anew -MinimalWindow.f \ With a start of a menubar false value turnkey? --- 1,6 ---- Anew -MinimalWindow.f \ With a start of a menubar + Needs Resources.f + false value turnkey? *************** *** 19,24 **** :M On_Done: ( -- ) - 0 call PostQuitMessage drop On_Done: super 0 ;M --- 19,24 ---- :M On_Done: ( -- ) On_Done: super 0 + bye ;M *************** *** 39,52 **** : Minimal start: MinimalWindow ! ApplicationBar SetMenuBar: MinimalWindow ! turnkey? ! IF MessageLoop bye ! THEN ! ; turnkey? [if] ' Minimal turnkey MinimalWindow.exe ! s" WIN32FOR.ICO" s" MinimalWindow.exe" AddAppIcon 1 pause-seconds bye [else] Minimal --- 39,49 ---- : Minimal start: MinimalWindow ! ApplicationBar SetMenuBar: MinimalWindow ; ! \ debug AddAppIcon? turnkey? [if] ' Minimal turnkey MinimalWindow.exe ! s" WIN32FOR.ICO" s" MinimalWindow.exe" AddAppIcon 1 pause-seconds bye [else] Minimal |
From: Jos v.d.V. <jo...@us...> - 2015-08-19 11:34:48
|
Update of /cvsroot/win32forth/win32forth/demos In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv18311 Modified Files: WinSock Demo.f Log Message: Jos: www.technobox.de is gone Index: WinSock Demo.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/demos/WinSock Demo.f,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** WinSock Demo.f 26 May 2007 10:06:10 -0000 1.1 --- WinSock Demo.f 19 Aug 2015 11:34:46 -0000 1.2 *************** *** 13,17 **** sock-close drop ; ! s" www.technobox.de" 80 sock-open value sock s" GET / HTTP/1.0" sock sock-write . crlf$ count sock sock-write . --- 13,17 ---- sock-close drop ; ! s" www.google.com" 80 sock-open value sock s" GET / HTTP/1.0" sock sock-write . crlf$ count sock sock-write . |
From: Jos v.d.V. <jo...@us...> - 2015-08-19 10:53:24
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16376 Modified Files: Extend.f Utils.f Winversion.f Log Message: Jos: Adapted for Windows 10. Index: Utils.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Utils.f,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** Utils.f 9 Dec 2013 21:25:16 -0000 1.32 --- Utils.f 19 Aug 2015 10:53:22 -0000 1.33 *************** *** 52,59 **** \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ : .platform ( -- ) \ W32F Tools extra in-system \ *G Display the Windows platform the system is running on. ! cr ." Platform: Windows " ! winver case [ version# ((version)) 0. 2swap >number 3drop 7 < ] [if] \ For V6.xx.xx suporting older OSs WIN95 of ." 95" endof --- 52,73 ---- \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + also hidden + + : .reg_WNT\Version ( key$ len -- ) \ W32F Tools extra in-system + \ *G Display the string of the specified registry key in + \ ** HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion + WNT\Version GetRegistryEntry 1- dup 0> + if type else 2drop then ; + previous + + : .platform-nt ( -- ) \ W32F Tools extra in-system + \ *G Display the Windows-NT platform the system is running on. + s" ProductName" .reg_WNT\Version ; + : .platform ( -- ) \ W32F Tools extra in-system \ *G Display the Windows platform the system is running on. ! winver cr ." Platform: " dup WIN2K < ! if ." Windows " then ! case [ version# ((version)) 0. 2swap >number 3drop 7 < ] [if] \ For V6.xx.xx suporting older OSs WIN95 of ." 95" endof *************** *** 62,74 **** WINNT351 of ." NT3.51" endof WINNT4 of ." NT4" endof ! [then] WIN2K of ." 2000" endof ! WINXP of ." XP" endof ! WIN2003 of ." SERVER 2003 R2" endof ! WINVISTA of ." VISTA" endof ! WIN2008 of ." SERVER 2008" endof ! WIN2008R2 of ." SERVER 2008 R2" endof ! WIN7 of ." WIN7" endof ! WIN8 of ." WIN8" endof ! endcase ; \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ --- 76,85 ---- WINNT351 of ." NT3.51" endof WINNT4 of ." NT4" endof ! [then] ! WIN2008 of ." Windows SERVER 2008" endof ! WIN2008R2 of ." Windows SERVER 2008 R2" endof ! WIN2K >= true ! of .platform-nt endof ! endcase ; \ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Index: Extend.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Extend.f,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** Extend.f 16 Feb 2015 15:39:23 -0000 1.34 --- Extend.f 19 Aug 2015 10:53:22 -0000 1.35 *************** *** 14,17 **** --- 14,19 ---- sys-FLOAD src\module.f \ scoping support for modules sys-FLOAD src\interpif.f \ interpretive conditionals + FLOAD src\pointer.f + FLOAD src\registry.f \ Win32 Registry support FLOAD src\WinVersion.f \ Windows Versioning *************** *** 22,26 **** sys-FLOAD src\asmwin32.f \ NEXT for Win32forth - FLOAD src\pointer.f FLOAD src\callback.f \ windows callback support FLOAD src\primhash.f \ primitive hash functions for OOP later --- 24,27 ---- *************** *** 42,46 **** \ FLOAD src\scrnctrl.f \ screen control words - FLOAD src\registry.f \ Win32 Registry support FLOAD src\ansfile.f \ ansi file words FLOAD src\keyboard.f \ function and special key constants --- 43,46 ---- *************** *** 137,140 **** s" Win32for.exe" prepend<home>\ (AddCheckSum) ! 1 pause-seconds --- 137,140 ---- s" Win32for.exe" prepend<home>\ (AddCheckSum) ! 2 pause-seconds Index: Winversion.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Winversion.f,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Winversion.f 17 Dec 2013 20:35:23 -0000 1.1 --- Winversion.f 19 Aug 2015 10:53:22 -0000 1.2 *************** *** 1,8 **** \ $Id$ ! \ ---------------- Operating System Checking -------------------------- ! \ Moved here from PrimUtil.f 1 PROC GetVersionEx --- 1,15 ---- \ $Id$ ! \ *D doc ! \ *! p-winversion W32F winversion ! \ *T Operating System Checking ! \ *P Untill windows 8 a call to GetVersionEx could be used to get the version information. \n ! \ ** To check for a version, say Win2K or greater, try WINVER WIN2K >= \n ! \ ** NOTE: The future V7.xx.xx and later will only support WIN2K or greater anyway. ! ! \ *S Glossary + \ Moved here from PrimUtil.f 1 PROC GetVersionEx *************** *** 13,17 **** --- 20,26 ---- 4 constant winnt351 5 constant winnt4 + [then] + 6 constant win2k 7 constant winxp *************** *** 22,32 **** 12 constant win7 \ Windows 7 13 constant win8 \ Windows 8 ! \ To check for a version, say Win2K or greater, try WINVER WIN2K >= ! \ NOTE The future V7.xx.xx and later will only support WIN2K or greaeter anyway. 0 value winver ! : winver-init ( -- ) \ get windows version 156 dup _localalloc dup>r ! \ set length of OSVERSIONINFOEX structure r@ call GetVersionEx \ call os for version --- 31,78 ---- 12 constant win7 \ Windows 7 13 constant win8 \ Windows 8 + 14 constant win10 \ Windows 10 ! also hidden ! ! : GetRegistryEntry ( vadr vlen root-key Zsection samDesired -- dadr dlen|0 ) ! \ *G Retrieves the data of any registry key. ! \ ** Parameters: ! \ ** vadr,vlen = the registry key value string to read. ! \ ** root-key = One of the first predefined keys EG: HKEY_CLASSES_ROOT ! \ ** Zsection = 0 terminated registry key section string. ! \ ** samDesired = security access mask. ! \ ** dadr,dlen = returns the data and size. ! 0 0 locals| reglen regtype | ReturnedKey$ off ! (RegCreateKey) dup -1 = ! if drop ReturnedKey$ count exit \ return on error, empty data ! then >r drop >r ! MAXCOUNTED to reglen \ init max length of string ! &of reglen ! ReturnedKey$ 1+ ! &of regtype ! 0 ! r> ! r@ ! Call RegQueryValueEx ! if ReturnedKey$ off \ Can not access the registry-key ! else reglen 0max ReturnedKey$ c! \ Includes the 0 for REG_SZ types ! then ! ReturnedKey$ count r> Call RegCloseKey drop ; ! ! previous internal ! ! : WNT\Version ( - hklm Zsection samDesired ) ! HKEY_LOCAL_MACHINE z" SOFTWARE\Microsoft\Windows NT\CurrentVersion" KEY_EXECUTE ; ! ! : GetVersionWin8+ ( -- winver ) ! s" CurrentMajorVersionNumber" WNT\Version ! GetRegistryEntry 0> if @ 4 + else drop -2 then ; ! ! external 0 value winver ! : winver-init ( -- ) ! \ *G Gets the windows version and stores it in winver. 156 dup _localalloc dup>r ! \ set length of OSVERSIONINFOEX structure r@ call GetVersionEx \ call os for version *************** *** 64,79 **** case 0 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if winvista \ Windows Vista ! else win2008 \ Windows Server 2008 then endof 1 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if win7 \ Windows 7 else win2008r2 \ Windows Server 2008 R2 then endof 2 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if win8 \ Windows 8 ! else win2008r2 \ Windows Server 2008 R2 then endof --- 110,126 ---- case 0 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if winvista \ Windows Vista ! else win2008 \ Windows Server 2008 then endof 1 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if win7 \ Windows 7 else win2008r2 \ Windows Server 2008 R2 then endof + 2 of r@ 154 + c@ \ Product Type ! VER_NT_WORKSTATION = if GetVersionWin8+ \ Windows 8 or better ! else win2008r2 \ Windows Server 2008 R2 then endof *************** *** 88,92 **** --- 135,142 ---- ; + previous initialization-chain chain-add winver-init winver-init + \S + \ *Z |
From: Jos v.d.V. <jo...@us...> - 2015-08-19 10:52:11
|
Update of /cvsroot/win32forth/win32forth In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16326 Modified Files: Win32for.cfg Log Message: Jos: Adapted for windows 10 Index: Win32for.cfg =================================================================== RCS file: /cvsroot/win32forth/win32forth/Win32for.cfg,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Win32for.cfg 1 Jun 2013 12:34:05 -0000 1.4 --- Win32for.cfg 19 Aug 2015 10:52:09 -0000 1.5 *************** *** 3,7 **** \ All system configurations should be in this file ! .( Win32Forth: a 32 Bit Forth for Windows 95/98/ME/NT4/W2K/XP/VISTA/W7 and W8) .version .cversion --- 3,7 ---- \ All system configurations should be in this file ! .( Win32Forth: a 32 Bit Forth for Windows 95/98/ME/NT4/W2K/XP/VISTA/W7/W8/W10) .version .cversion |
From: Jos v.d.V. <jo...@us...> - 2015-02-16 15:39:25
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv13109 Modified Files: 486ASM.F Extend.f Log Message: Jos Enables uservariables movlpd Index: Extend.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/Extend.f,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** Extend.f 9 Dec 2013 21:25:16 -0000 1.33 --- Extend.f 16 Feb 2015 15:39:23 -0000 1.34 *************** *** 17,21 **** FLOAD src\paths.f \ multi path support words ! sys-FLOAD src\486asm.f \ Jim's 486 assembler sys-FLOAD src\asmmac.f \ Jim's 486 macros --- 17,21 ---- FLOAD src\paths.f \ multi path support words ! sys-FLOAD src\NumberAlloc.f \ Allocates numbers without the use of C, or , sys-FLOAD src\486asm.f \ Jim's 486 assembler sys-FLOAD src\asmmac.f \ Jim's 486 macros Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** 486ASM.F 26 Jan 2015 13:55:57 -0000 1.17 --- 486ASM.F 16 Feb 2015 15:39:21 -0000 1.18 *************** *** 27,60 **** \ See also 586asmcm.f - also hidden - 0 value pfa-mnemonic - - : (asm-abort") ( f - ) - ((")) swap if - cr ." Coding: " last @ count type ." at " - pfa-mnemonic body> .name count type - ." in file " loadfile count dup if - type space else 2drop - then ." at line " loadline dup decr @ dup . edit-error abort - else drop - then ; - - : asm-abort" ( -<string">- ) compile (asm-abort") ," ; immediate - - previous - - : byte$: \ compiletime: ( ...; - ) runtime: ( - Adr-lcount ) - create here dup , \ map: #bytes... - begin bl nextword - if count number? - if d>s true - else 2drop false - then - else false - then - while c, - repeat here over - cell- swap ! - ; - ( declare the vocabularies needed ) --- 27,30 ---- *************** *** 207,210 **** --- 177,195 ---- if clr-opstack then ; in-asm + + 0 value pfa-mnemonic + + : (asm-abort") ( f - ) + ((")) swap if + cr ." Coding: " last @ count type ." at " + pfa-mnemonic body> .name count type + ." in file " loadfile count dup if + type space else 2drop + then ." at line " loadline dup decr @ dup . edit-error abort + else drop + then ; + + : asm-abort" ( -<string">- ) compile (asm-abort") ," ; immediate + : push-op ( move a parameter stack item to the opstack ) ( x -- ) *************** *** 1829,1866 **** if 10 or then ; ! : any= ( &bytes - flag ) lcount rot scan nip 0<> ; ! : not-any= ( adr char - flag ) swap any= not ; ! : not-any-mod-r/m= ( adr - flag ) mod-r/m data-@ not-any= ; ! byte$: &no-xmm-move 29 7F 11 13 17 D7 ; ! : no-xmm-move ( opcode - opcode flag ) &no-xmm-move over not-any= ; ! byte$: &xmm-to-xmm C2 C6 ; ( - adr ) : xmm-to-xmm ( opcode - opcode flag ) dup &xmm-to-xmm any= ; \ case: cmpss shufps shufpd ! byte$: &no-xmm-to-xmm? FC CA ; ( - adr ) : no-xmm-to-xmm? ( - flag ) &no-xmm-to-xmm? not-any-mod-r/m= ; ! byte$: &xmm-to-m 13 17 ; ! byte$: &no-xmm-to-m C0 C1 1 0B ; ( - adr ) : xmm-to-m ( opcode - opcode flag ) dup &xmm-to-m any= ; \ case: movhpd movlpd : no-xmm-to-m ( - flag ) &no-xmm-to-m not-any-mod-r/m= ; ! byte$: &m-to-xmm 12 16 13 3 ; ( - adr ) ! byte$: &no-m-to-xmm 1 3 8 9 0A 0B C0 C1 C8 ; ( - adr ) : m-to-xmm ( opcode - opcode flag ) dup &m-to-xmm any= ; \ case: movhpd movlpd : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; ! byte$: &r32 C0 C1 C2 C3 D3 CB D9 DA DB ; ( - adr ) ! byte$: &no-r32-check 11 12 D7 13 16 17 57 58 ; ( - adr ) ! byte$: ¬-to-r32? DA C7 CF D7 DF ; ( - adr ) ! : r32? ( - flag ) mod-r/m data-@ &r32 any= ; ! : no-r32-check ( opcode - opcode flag ) &no-r32-check over not-any= ; : not-to-r32? ( - flag ) ¬-to-r32? not-any-mod-r/m= ; --- 1814,1851 ---- if 10 or then ; ! : any= ( char addr count - flag ) rot scan nip 0<> ; ! : not-any= ( char addr count - flag ) any= not ; ! : not-any-mod-r/m= ( addr count - flag ) mod-r/m data-@ -rot not-any= ; ! numbers: &no-xmm-move ( - adr n ) 29 7F 11 13 17 D7 ;bytes ! : no-xmm-move ( opcode - opcode flag ) dup &no-xmm-move not-any= ; ! numbers: &xmm-to-xmm ( - adr n ) C2 C6 ;bytes : xmm-to-xmm ( opcode - opcode flag ) dup &xmm-to-xmm any= ; \ case: cmpss shufps shufpd ! numbers: &no-xmm-to-xmm? ( - adr n ) FC CA ;bytes : no-xmm-to-xmm? ( - flag ) &no-xmm-to-xmm? not-any-mod-r/m= ; ! numbers: &xmm-to-m ( - adr n ) 13 17 ;bytes ! numbers: &no-xmm-to-m ( - adr n ) 1 4 C0 C1 0B ;bytes ( - adr ) : xmm-to-m ( opcode - opcode flag ) dup &xmm-to-m any= ; \ case: movhpd movlpd : no-xmm-to-m ( - flag ) &no-xmm-to-m not-any-mod-r/m= ; ! numbers: &m-to-xmm ( - adr n ) 12 16 13 3 ;bytes ! numbers: &no-m-to-xmm ( - adr n ) 1 3 4 8 9 0A 0B C0 C1 C8 ;bytes : m-to-xmm ( opcode - opcode flag ) dup &m-to-xmm any= ; \ case: movhpd movlpd : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; ! numbers: &r32 ( - adr n ) C0 C1 C2 C3 D3 CB D9 DA DB ;bytes ! numbers: &no-r32-check ( - adr n ) 11 12 D7 13 16 17 57 58 ;bytes ! numbers: ¬-to-r32? ( - adr n ) DA C7 CF D7 DF ;bytes ! : r32? ( - flag ) mod-r/m data-@ &r32 any= ; ! : no-r32-check ( opcode - opcode flag ) dup &no-r32-check not-any= ; : not-to-r32? ( - flag ) ¬-to-r32? not-any-mod-r/m= ; *************** *** 1876,1880 **** no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb ! xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." no-r32-check r32? and asm-abort" Operand r32 not allowed." --- 1861,1865 ---- no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb ! ( \) xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." no-r32-check r32? and asm-abort" Operand r32 not allowed." |
From: Jos v.d.V. <jo...@us...> - 2015-02-16 15:33:18
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv12942 Added Files: NumberAlloc.f Log Message: Jos Allocates numbers without the use of C, or , --- NEW FILE: NumberAlloc.f --- Anew -NumberAlloc.f \ Allocates numbers without the use of C, or , hidden definitions defer <depth> : save-(f)depth ( depth|fdepth - ) is <depth> create <depth> , ; : ;fill ( numbers|floats... 'comma size -- ) locals| size 'comma | <depth> here 1 cells - tuck @ - dup 1 < abort" Empty stack" dup size * >r swap ! here r@ allot dup r> + size dup negate to size - do i 'comma execute size +loop does> lcount ; also forth definitions : numbers: \ compiletime: ( "name" - ) runtime: ( - Adr #items ) \ *G Creates an allocated space for numbers. \ ** The first cell contains the number of items. \ ** In runtime the created definition will return the adress \ ** of the first item and the number of used items. Eg: \ ** numbers: &test1 8 0 13 ;bytes &test1 dump \ ** numbers: &test2 8 0 -1 ;ints &test2 cells dump ['] depth save-(f)depth ; \ map: n... : ;bytes ( numbers... -- ) \ *G Terminates a started definition of numbers: and fills \ ** the allocated space with 1 byte of each number. ['] c! 1 ;fill ; : ;ints ( numbers... -- ) \ *G Terminates a started definition of numbers: and fills \ ** the allocated space with 32-bits numbers. ['] ! 1 cells ;fill ; \s |
From: Jos v.d.V. <jo...@us...> - 2015-01-26 13:55:59
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv3161 Modified Files: 486ASM.F 586ASMCM.f Log Message: Jos Added byte$: Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** 586ASMCM.f 19 Jan 2015 13:29:37 -0000 1.11 --- 586ASMCM.f 26 Jan 2015 13:55:57 -0000 1.12 *************** *** 2,6 **** \ arm conditional move macros for 586+ \ Also floating-point extensions for P6 or better gah ! also assembler also asm-hidden definitions --- 2,6 ---- \ arm conditional move macros for 586+ \ Also floating-point extensions for P6 or better gah ! \ Januari 2015, Added SSE instructions for SIMD. also assembler also asm-hidden definitions Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** 486ASM.F 19 Jan 2015 13:29:37 -0000 1.16 --- 486ASM.F 26 Jan 2015 13:55:57 -0000 1.17 *************** *** 34,38 **** cr ." Coding: " last @ count type ." at " pfa-mnemonic body> .name count type ! ." in file " loadfile count -if type space else 2drop then ." at line " loadline dup decr @ dup . edit-error abort --- 34,38 ---- cr ." Coding: " last @ count type ." at " pfa-mnemonic body> .name count type ! ." in file " loadfile count dup if type space else 2drop then ." at line " loadline dup decr @ dup . edit-error abort *************** *** 44,47 **** --- 44,60 ---- previous + : byte$: \ compiletime: ( ...; - ) runtime: ( - Adr-lcount ) + create here dup , \ map: #bytes... + begin bl nextword + if count number? + if d>s true + else 2drop false + then + else false + then + while c, + repeat here over - cell- swap ! + ; + ( declare the vocabularies needed ) *************** *** 1816,1844 **** if 10 or then ; ! : no-xmm-move ( opcode - opcode flag ) ! dup 29 <> over 7F <> and over 13 <> and ! over 17 <> and over D7 <> and ; ! : xmm-to-xmm ( opcode - opcode flag ) dup C2 = over C6 = or ; \ case: cmpss shufps shufpd ! : no-xmm-to-xmm? ( - flag ) mod-r/m data-@ dup FC <> swap CA <> and ; ! : xmm-to-m ( opcode - opcode flag ) dup 13 = over 17 = or ; \ case: movhpd movlpd ! : no-xmm-to-m ( - flag ) mod-r/m data-@ dup C0 <> over C1 <> and ! over 1 <> and swap 0B <> and ; ! : m-to-xmm ( opcode - opcode flag ) dup 12 = over 16 = or ; \ case: movhpd movlpd ! : no-m-to-xmm ( - flag ) mod-r/m data-@ dup C1 <> over 13 <> and ! over 1 <> and swap 0 <> and ; ! : r32? ( - flag ) mod-r/m data-@ dup D3 = over C3 = or over C0 = or ! over C1 = or over C2 = or over CB = or over D9 = or ! over DA = or swap DB = or ; ! : no-r32-check ( opcode - opcode flag ) dup D7 <> over 13 <> and over 17 <> and over 57 <> and ! over 58 <> and ; - : not-to-r32? ( - flag ) mod-r/m data-@ dup DA <> over C7 <> and over CF <> and - over D7 <> and swap DF <> and ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) --- 1829,1868 ---- if 10 or then ; ! : any= ( &bytes - flag ) lcount rot scan nip 0<> ; ! : not-any= ( adr char - flag ) swap any= not ; ! : not-any-mod-r/m= ( adr - flag ) mod-r/m data-@ not-any= ; + byte$: &no-xmm-move 29 7F 11 13 17 D7 ; ! : no-xmm-move ( opcode - opcode flag ) &no-xmm-move over not-any= ; ! byte$: &xmm-to-xmm C2 C6 ; ( - adr ) ! : xmm-to-xmm ( opcode - opcode flag ) dup &xmm-to-xmm any= ; \ case: cmpss shufps shufpd ! byte$: &no-xmm-to-xmm? FC CA ; ( - adr ) ! : no-xmm-to-xmm? ( - flag ) &no-xmm-to-xmm? not-any-mod-r/m= ; ! ! byte$: &xmm-to-m 13 17 ; ! byte$: &no-xmm-to-m C0 C1 1 0B ; ( - adr ) ! ! : xmm-to-m ( opcode - opcode flag ) dup &xmm-to-m any= ; \ case: movhpd movlpd ! : no-xmm-to-m ( - flag ) &no-xmm-to-m not-any-mod-r/m= ; ! ! byte$: &m-to-xmm 12 16 13 3 ; ( - adr ) ! byte$: &no-m-to-xmm 1 3 8 9 0A 0B C0 C1 C8 ; ( - adr ) ! ! : m-to-xmm ( opcode - opcode flag ) dup &m-to-xmm any= ; \ case: movhpd movlpd ! : no-m-to-xmm ( - flag ) &no-m-to-xmm not-any-mod-r/m= ; ! ! byte$: &r32 C0 C1 C2 C3 D3 CB D9 DA DB ; ( - adr ) ! byte$: &no-r32-check 11 12 D7 13 16 17 57 58 ; ( - adr ) ! byte$: ¬-to-r32? DA C7 CF D7 DF ; ( - adr ) ! ! : r32? ( - flag ) mod-r/m data-@ &r32 any= ; ! : no-r32-check ( opcode - opcode flag ) &no-r32-check over not-any= ; ! : not-to-r32? ( - flag ) ¬-to-r32? not-any-mod-r/m= ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) |
From: Jos v.d.V. <jo...@us...> - 2015-01-19 13:29:41
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv18359 Modified Files: 486ASM.F 586ASMCM.f DIS486.F Log Message: Jos Added asm-abort for better error reporting more instructions and extended the disassembler Index: DIS486.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/DIS486.F,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** DIS486.F 2 Dec 2006 12:09:52 -0000 1.7 --- DIS486.F 19 Jan 2015 13:29:37 -0000 1.8 *************** *** 13,16 **** --- 13,17 ---- \ 06-21-95 SMuB removed redundant COUNT calls from txb, lxs. \ 04-??-97 Extended by C.L. to include P6 and MMX instructions + \ 01-19-15 Jos, Extended for XMM instructions. cr .( Loading 80486 Disassembler...) *************** *** 37,40 **** --- 38,43 ---- 0 value dis.prefix-op 0 value dis.mmx-reg? + 0 VALUE mmx-reg + 0 VALUE xmm-reg \ For a 32-bit environment 0 value dis.mem? \ for suppressing comma after memory address *************** *** 58,62 **** : parse/ModR/M ( mod-r-r/m -- 3bits=r/m 3bits=r/op 2bits=mod ) ! \ r/op includes general, special, segment, MMX registers or exteded opcode 255 and 8 /mod 8 /mod ; --- 61,65 ---- : parse/ModR/M ( mod-r-r/m -- 3bits=r/m 3bits=r/op 2bits=mod ) ! \ r/op includes general, special, segment, MMX registers or extended opcode 255 and 8 /mod 8 /mod ; *************** *** 157,160 **** --- 160,164 ---- : .reg16(XX-XXX-NNN) ( n -- ) 7 and S" axcxdxbxspbpsidi" 2 ss. ; : .reg32(XX-XXX-NNN) ( n -- ) 7 and S" eaxecxedxebxespebpesiedi" 3 ss. ; + : .xmmreg ( n -- ) 7 AND S" xmm0xmm1xmm2xmm3xmm4xmm5xmm6xmm7" 4 ss. ; \ 1 : .reg16/32(XX-XXX-NNN) ( n -- ) *************** *** 165,175 **** : .reg(XX-XXX-NNN) ( a n -- a ) ! dis.mmx-reg? ! if .mreg(XX-XXX-NNN) ! else dis.size ! if .reg16/32(XX-XXX-NNN) ! else .reg8(XX-XXX-NNN) ! then ! then ; : .[base16](XX-XXX-1NN) ( r/m -- ) --- 169,183 ---- : .reg(XX-XXX-NNN) ( a n -- a ) ! xmm-reg ! if .xmmreg ! else dis.mmx-reg? ! if .mreg(XX-XXX-NNN) ! else dis.size ! if .reg16/32(XX-XXX-NNN) ! else .reg8(XX-XXX-NNN) ! then ! then ! then ; ! : .[base16](XX-XXX-1NN) ( r/m -- ) *************** *** 291,301 **** then ; ! : r/m8(ModR/M) 0 to dis.size mod-r/m(ModR/M) ; ! : r/m16/32(ModR/M) 1 to dis.size mod-r/m(ModR/M) ; ! : r/m16(ModR/M) true to dis.16-bit-data r/m16/32(ModR/M) ; : r,r/m() ( adr -- adr' ) count dup 3 rshift ( op/reg->reg/m ) ! .reg(XX-XXX-NNN) ., mod-r/m(ModR/M) ; : r/m,r() ( adr -- adr' ) --- 299,313 ---- then ; ! : r/m8(ModR/M) ( adr modr/m -- adr' ) 0 to dis.size mod-r/m(ModR/M) ; ! : r/m16/32(ModR/M) ( adr modr/m -- adr' ) 1 to dis.size mod-r/m(ModR/M) ; ! : r/m16(ModR/M) ( adr modr/m -- adr' ) true to dis.16-bit-data r/m16/32(ModR/M) ; : r,r/m() ( adr -- adr' ) + count dup 3 rshift + .reg(XX-XXX-NNN) ., mod-r/m(ModR/M) ; + + : r,r/m ( adr -- adr' ) count dup 3 rshift ( op/reg->reg/m ) ! .reg(XX-XXX-NNN) ., mod-r/m(ModR/M) ; : r/m,r() ( adr -- adr' ) *************** *** 309,312 **** --- 321,325 ---- 2 and if r,r/m() else r/m,r() then ; + \ -------------------- Simple Opcodes -------------------- *************** *** 1170,1173 **** --- 1183,1189 ---- r,r/m() ; + + #14 constant opcfield + \ --------------------- MMX Operations ----------------- *************** *** 1272,1275 **** --- 1288,1292 ---- .s" pxor " drop r,r/m() ; + \ -------------------- Opcode Table -------------------- *************** *** 1306,1310 **** dup 0x70 and 0x50 0x80 within to dis.mmx-reg? cells op2-table2 + @ execute ! 0 to dis.mmx-reg? ; create op1-table --- 1323,1328 ---- dup 0x70 and 0x50 0x80 within to dis.mmx-reg? cells op2-table2 + @ execute ! 0 to dis.mmx-reg? ! 0 to xmm-reg ; create op1-table *************** *** 1330,1337 **** --- 1348,1573 ---- ops shf shf shf shf aam aad ??? xlt fd8 fd9 fda fdb fdc fdd fde fdf \ D ops lup lup lup lup inp inp otp otp jsr jmp cis jmp ind ind otd otd \ E + \ ops lok ??? rpz rep hlt cmc F6. F6. clc stc cli sti cld std FE. FF. \ F ops lok ??? rpz rep hlt cmc F6. F6. clc stc cli sti cld std FE. FF. \ F \ 0 1 2 3 4 5 6 7 8 9 A B C D E F + + \ -------------------------- SSE2 Operations ------------------------------- + + \ -- swap reg fields in mod-r/m byte + : swap-regs ( u1 -- u2 ) + LOCALS| mod-r/m | + mod-r/m 7 AND 3 LSHIFT + mod-r/m 3 RSHIFT 7 AND OR + mod-r/m $C0 AND OR ; + + : ?swap-regs DUP $C0 AND $C0 = IF swap-regs ENDIF ; ( u1 -- u2 ) + + : modbyte ( mod-r-r/m -- r/m r mod ) ( r including general, special, segment, MMX ) + ( mod-op-r/m -- r/m op mod ) + #255 AND 8 /MOD 8 /MOD ; + + : mod-r/m ( addr modr/m -- addr' ) + modbyte NIP ( [mod-r-r/m] -- r/m mod ) + dis.default-16bit? + if mod-r/m16(r/m,mod) + else mod-r/m32(r/m,mod) + then ; + + : ::imm8 ( addr -- addr' ) ., count h.>s ; + : stab ( pos - ) s-buf c@ - 1 max sspaces ; + : rstab ( -- ) 0x8 stab ; + : R:sse2 ( -- ) true TO xmm-reg false TO mmx-reg ; + : R:reg ( a n -- a ) 7 and .reg(XX-XXX-NNN) ; + : 0f-prefix? ( adr -- adr' flag ) dup 1+ c@ 0xF = ; + + : xm-r/m,r ( addr -- addr' ) rstab R:sse2 r/m,r() ; + + : xm-r,r/m ( addr -- addr' ) rstab R:sse2 r,r/m ; + + : r32/m,xmmr ( addr -- addr' ) \ the register is always XMM + rstab count ?swap-regs + true to xmm-reg + dup >r mod-r/m ., r> 3 rshift R:reg ; + + : xmmr,r32/m ( addr -- addr' ) \ dest register is XMM + rstab true to xmm-reg count dup 3 rshift R:reg + ., false to xmm-reg r/m16/32(ModR/M) ; + + : r,xmm ( addr -- addr' ) \ 1st=r32 2nd=XMM + rstab false to xmm-reg count dup 3 rshift + .reg32(XX-XXX-NNN) ., .xmmreg ; + + : .cmp-sse ( adr -- adr' ) + dup 1+ c@ + case + 0 of .s" cmpeq" endof + 1 of .s" cmplt" endof + 2 of .s" cmple" endof + 3 of .s" cmpunord" endof + 4 of .s" cmpneq" endof + 5 of .s" cmpnlt" endof + 6 of .s" cmpnle" endof + 7 of .s" cmpord" endof + endcase ; + + : dis-cmpps ( adr -- adr' ) .cmp-sse .s" ps" xm-r,r/m 1+ ; + : dis-cmpss ( adr -- adr' ) .cmp-sse .s" ss" xm-r,r/m 1+ ; + : dis-cmppd ( adr -- adr' ) .cmp-sse .s" pd" xm-r,r/m 1+ ; + : dis-cmpsd ( adr -- adr' ) .cmp-sse .s" sd" xm-r,r/m 1+ ; + + : save-adr ( adr flag -- flag adr adr ) true swap dup ; + : restore-adr ( true adr adr1 -- false adr adr adr ) + 2drop nip false swap dup dup ; + + : get-adrfl ( flag adr adr' -- adrfl flag ) + rot + if nip true + else drop false + then ; + + : ?dis-660f ( adr flag -- adr' flag ) + if save-adr 2 + count + case + $10 of .s" movupd" xm-r,r/m endof + $11 of .s" movupd" r32/m,xmmr endof + $12 of .s" movlpd" xm-r,r/m endof + $13 of .s" movlpd" r32/m,xmmr endof + $14 of .s" unpcklpd" xmmr,r32/m endof + $15 of .s" unpckhpd" xmmr,r32/m endof + $16 of .s" movhpd" xm-r,r/m endof + $17 of .s" movhpd" r32/m,xmmr endof + $28 of .s" movapd" xm-r,r/m endof + $29 of .s" movapd" r32/m,xmmr endof + $2e of .s" ucomisd" xm-r,r/m endof + $2f of .s" comisd" xm-r,r/m endof + $51 of .s" sqrtpd" xm-r,r/m endof + $54 of .s" sqrtpd" xm-r,r/m endof + $54 of .s" andpd" xm-r,r/m endof + $55 of .s" andnpd" xm-r,r/m endof + $56 of .s" orpd" xm-r,r/m endof + $57 of .s" xorpd" xm-r,r/m endof + $58 of .s" addpd" xm-r,r/m endof + $59 of .s" mulpd" xm-r,r/m endof + $5a of .s" cvtps2ps" xm-r,r/m endof + $5b of .s" cvtps2dq" xm-r,r/m endof + $5c of .s" subpd" xm-r,r/m endof + $5d of .s" minpd" xm-r,r/m endof + $5e of .s" divpd" xm-r,r/m endof + $5f of .s" maxpd" xm-r,r/m endof + $6e of .s" movd" xm-r,r/m endof + $7e of .s" movd" r32/m,xmmr endof + $6f of .s" movqda" xmmr,r32/m endof + $7f of .s" movqda" r32/m,xmmr endof + $c2 of dis-cmppd endof + $c6 of .s" shufpd" xm-r,r/m ::imm8 endof + $d7 of .s" pmovmskb" r,xmm endof + restore-adr + endcase get-adrfl + else false \ no 66 0f + then ; + + : ?dis-0f ( adr flag -- adr' flag ) + if true swap 1+ count + case + $10 of .s" movups" xm-r,r/m endof + $11 of .s" movups" r32/m,xmmr endof + $14 of .s" unpcklps" xmmr,r32/m endof + $15 of .s" unpckhps" xmmr,r32/m endof + $28 of .s" movaps" xm-r,r/m endof + $29 of .s" movaps" r32/m,xmmr endof + $2a of .s" movaps" xmmr,r32/m endof + $2e of .s" ucomisd" xm-r,r/m endof + $2f of .s" comiss" xm-r,r/m endof + $51 of .s" sqrtps" xm-r,r/m endof + $52 of .s" rsqrtps" xm-r,r/m endof + $53 of .s" rcpps" xm-r,r/m endof + $54 of .s" andps" xm-r,r/m endof + $55 of .s" andnps" xm-r,r/m endof + $56 of .s" orps" xm-r,r/m endof + $57 of .s" xorps" xm-r,r/m endof + $58 of .s" addps" xm-r,r/m endof + $59 of .s" mulps" xm-r,r/m endof + $5a of .s" cvtps2pd" xm-r,r/m endof + $5b of .s" cvtdq2ps" xm-r,r/m endof + $5c of .s" subps" xm-r,r/m endof + $5d of .s" minps" xm-r,r/m endof + $5e of .s" divps" xm-r,r/m endof + $5f of .s" maxps" xm-r,r/m endof + $c2 of dis-cmpps endof + $c6 of .s" shufps" xm-r,r/m ::imm8 endof + rot drop false -rot + endcase swap + else false \ no 0f + then ; + + : ?dis-f20f ( adr flag -- adr' flag ) + if save-adr 2 + count + case + $10 of .s" movsd" xm-r,r/m endof + $11 of .s" movsd" xm-r/m,r endof + $2a of .s" cvtsi2sd" xmmr,r32/m endof + $51 of .s" sqrtsd" xm-r,r/m endof + $52 of .s" rsqrtsd" xm-r,r/m endof + $58 of .s" addsd" xm-r,r/m endof + $59 of .s" mulsd" xm-r,r/m endof + $5a of .s" cvtsd2ss" xm-r,r/m endof + $5c of .s" subsd" xm-r,r/m endof + $5d of .s" minsd" xm-r,r/m endof + $5e of .s" divsd" xm-r,r/m endof + $5f of .s" maxsd" xm-r,r/m endof + $c2 of dis-cmpsd endof + $e6 of .s" cvtpd2dq" xmmr,r32/m endof + restore-adr + endcase get-adrfl + else false \ no f2 0f + then ; + + : ?dis-f30f ( adr flag -- adr' flag ) + if save-adr 2 + count \ f a0 a1 + case + $10 of .s" movss" xm-r,r/m endof + $11 of .s" movss" xm-r/m,r endof + $2a of .s" cvtsi2ss" xmmr,r32/m endof + $51 of .s" sqrtss" xm-r,r/m endof + $52 of .s" rsqrtss" xm-r,r/m endof + $53 of .s" rcpss" xm-r,r/m endof + $58 of .s" addss" xm-r,r/m endof + $59 of .s" mulss" xm-r,r/m endof + $5a of .s" cvtss2sd" xm-r,r/m endof + $5b of .s" cvttps2dq" xm-r/m,r endof + $5c of .s" subss" xm-r,r/m endof + $5d of .s" minss" xm-r,r/m endof + $5e of .s" divss" xm-r,r/m endof + $5f of .s" maxss" xm-r,r/m endof + $6f of .s" movdqu" xm-r,r/m endof + $7f of .s" movdqu" r32/m,xmmr endof + $c2 of dis-cmpss endof + $e6 of .s" cvtdq2pd" xmmr,r32/m endof + restore-adr + endcase get-adrfl + else false \ no f3 0f + then ; + + + : pf-coded? ( adr -- adr' flag ) + dup c@ + case + 0x66 of 0f-prefix? ?dis-660f endof + 0xf2 of 0f-prefix? ?dis-f20f endof + 0xf3 of 0f-prefix? ?dis-f30f endof + false swap + endcase ; + + : prefix-coded? ( adr -- adr' flag ) + pf-coded? + if true + else dup dup c@ 0xf = ?dis-0f + if rot drop true + else drop false + then + then ; + \ ----------------------------------------------------------------------- \ User interface *************** *** 1342,1356 **** false to dis.prefix-op \ SMuB false to dis.mem? \ rbs -- suppress commas after mem ! count ! dup 1 and to dis.size ! dup cells op1-table + @ execute ! dis.prefix-op 0= ! if dis.default-16bit? 0= ! if false to dis.16-bit-data ! false to dis.16-bit-addr ! else true to dis.16-bit-data ! true to dis.16-bit-addr ! then ! then ; 0 value next-inst --- 1578,1595 ---- false to dis.prefix-op \ SMuB false to dis.mem? \ rbs -- suppress commas after mem ! false to xmm-reg ! false to dis.mmx-reg? ! prefix-coded? not ! if count dup 1 and to dis.size ! dup cells op1-table + @ execute ! dis.prefix-op 0= ! if dis.default-16bit? 0= ! if false to dis.16-bit-data ! false to dis.16-bit-addr ! else true to dis.16-bit-data ! true to dis.16-bit-addr ! then ! then ! then ; 0 value next-inst *************** *** 1365,1369 **** dup r> 2dup - 0x10 u> abort" decompiler error" ! do i c@ 2 h.n loop ." ) " comment-col col s> type then dup to next-inst ; --- 1604,1608 ---- dup r> 2dup - 0x10 u> abort" decompiler error" ! do i c@ 2 h.n loop ." ) " comment-col col s> type then dup to next-inst ; Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** 586ASMCM.f 16 Jan 2015 17:54:29 -0000 1.10 --- 586ASMCM.f 19 Jan 2015 13:29:37 -0000 1.11 *************** *** 15,20 **** : xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0x0F code-c, (xmm-compile) ! ; : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) --- 15,19 ---- : xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0x0F code-c, (xmm-compile) ; : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 79,82 **** --- 78,84 ---- split-imm-opcode over >r dxmm-compile-no-disp r> ?include-0-immed ; + : cmpsd-compile ( param -- ) + split-imm-opcode over >r true no-do-disp data-! F2-dxmm-compile r> ?include-0-immed ; + : cmpss-compile ( param -- ) split-imm-opcode over >r true no-do-disp data-! F3-dxmm-compile r> ?include-0-immed ; *************** *** 226,230 **** 0x6E ' dxmm-compile opcode cvttpd2dq - \ 0x6E ' 66-pf-compile1 opcode movd 0x6E ' movd-compile opcode movd 0x6F ' 66-dxmm-compile opcode movdqa --- 228,231 ---- *************** *** 259,262 **** --- 260,272 ---- 0xC207 ' cmpss-compile opcode cmpordss + 0xC200 ' cmpsd-compile opcode cmpeqsd + 0xC201 ' cmpsd-compile opcode cmpltsd + 0xC202 ' cmpsd-compile opcode cmplesd + 0xC203 ' cmpsd-compile opcode cmpunordsd + 0xC204 ' cmpsd-compile opcode cmpneqsd + 0xC205 ' cmpsd-compile opcode cmpnltsd + 0xC206 ' cmpsd-compile opcode cmpnlesd + 0xC207 ' cmpsd-compile opcode cmpordsd + 0xC6 ' xmm-compile-no-disp opcode shufps 0xC6 ' dxmm-compile-no-disp opcode shufpd Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** 486ASM.F 16 Jan 2015 17:54:29 -0000 1.15 --- 486ASM.F 19 Jan 2015 13:29:37 -0000 1.16 *************** *** 27,30 **** --- 27,47 ---- \ See also 586asmcm.f + also hidden + 0 value pfa-mnemonic + + : (asm-abort") ( f - ) + ((")) swap if + cr ." Coding: " last @ count type ." at " + pfa-mnemonic body> .name count type + ." in file " loadfile count -if + type space else 2drop + then ." at line " loadline dup decr @ dup . edit-error abort + else drop + then ; + + : asm-abort" ( -<string">- ) compile (asm-abort") ," ; immediate + + previous + ( declare the vocabularies needed ) *************** *** 161,164 **** --- 178,182 ---- default-size 16bit = if 32bit else 16bit then ; in-asm + : use16 ( generate 16 bit code by default ) 16bit to default-size ; *************** *** 179,188 **** ( x -- ) opstack data-@ opstack-end = dup ?clr-opstack ! abort" OPSTACK overflow" opstack dup data-@ dup cell+ rot data-! data-! ; : pop-op ( move an item from the operand stack to the parameter stack ) ( -- x ) opstack dup data-@ swap cell+ = dup ?clr-opstack ! abort" OPSTACK underflow" opstack dup data-@ cell- dup rot data-! data-@ ; in-hidden --- 197,206 ---- ( x -- ) opstack data-@ opstack-end = dup ?clr-opstack ! asm-abort" OPSTACK overflow" opstack dup data-@ dup cell+ rot data-! data-! ; : pop-op ( move an item from the operand stack to the parameter stack ) ( -- x ) opstack dup data-@ swap cell+ = dup ?clr-opstack ! asm-abort" OPSTACK underflow" opstack dup data-@ cell- dup rot data-! data-@ ; in-hidden *************** *** 199,203 **** frtable [ frmax 1+ ] literal 0 do frmax i = dup ?clr-opstack ! abort" too many unresolved forward references" dup data-@ if cell+ cell+ else 2dup data-! code-here over cell+ --- 217,221 ---- frtable [ frmax 1+ ] literal 0 do frmax i = dup ?clr-opstack ! asm-abort" too many unresolved forward references" dup data-@ if cell+ cell+ else 2dup data-! code-here over cell+ *************** *** 282,286 **** ( offset -- index ) macro-label-level data-@ + dup lbmax > ! abort" Too many local labels in macros" ; : +macro-ref ( reference a label offset from the macro level ) ( offset -- addr ) --- 300,304 ---- ( offset -- index ) macro-label-level data-@ + dup lbmax > ! asm-abort" Too many local labels in macros" ; : +macro-ref ( reference a label offset from the macro level ) ( offset -- addr ) *************** *** 684,713 **** : _?params ( are there parameters on the stack? ) sp@ sp-save data-@ - dup ?clr-opstack ! abort" offset or immediate operand not allowed with this instruction" ; ' _?params is ?params : _?seg ( is there a segment override? ) seg-prefix data-@ dup ?clr-opstack ! abort" segment override not allowed with this instruction" ; ' _?seg is ?seg : _?lock ( is there a LOCK prefix? ) inst-prefix data-@ 0f0 = dup ?clr-opstack ! abort" LOCK prefix not allowed with this instruction" ; ' _?lock is ?lock : _?rep ( is there a repeat prefix? ) inst-prefix data-@ 0f3 over = 0f2 rot = or dup ?clr-opstack ! abort" REP, etc. not allowed with this instruction" ; ' _?rep is ?rep : _?inst-pre ( is there any instruction prefix? ) inst-prefix data-@ dup ?clr-opstack ! abort" Instruction prefixes not allowed with this instruction" ; ' _?inst-pre is ?inst-pre : _?operands ( are there any operands? ) op-depth dup ?clr-opstack ! abort" operands not allowed with this instruction" ; ' _?operands is ?operands --- 702,731 ---- : _?params ( are there parameters on the stack? ) sp@ sp-save data-@ - dup ?clr-opstack ! asm-abort" offset or immediate operand not allowed with this instruction" ; ' _?params is ?params : _?seg ( is there a segment override? ) seg-prefix data-@ dup ?clr-opstack ! asm-abort" segment override not allowed with this instruction" ; ' _?seg is ?seg : _?lock ( is there a LOCK prefix? ) inst-prefix data-@ 0f0 = dup ?clr-opstack ! asm-abort" LOCK prefix not allowed with this instruction" ; ' _?lock is ?lock : _?rep ( is there a repeat prefix? ) inst-prefix data-@ 0f3 over = 0f2 rot = or dup ?clr-opstack ! asm-abort" REP, etc. not allowed with this instruction" ; ' _?rep is ?rep : _?inst-pre ( is there any instruction prefix? ) inst-prefix data-@ dup ?clr-opstack ! asm-abort" Instruction prefixes not allowed with this instruction" ; ' _?inst-pre is ?inst-pre : _?operands ( are there any operands? ) op-depth dup ?clr-opstack ! asm-abort" operands not allowed with this instruction" ; ' _?operands is ?operands *************** *** 715,719 **** ( n -- ) ?dup if dt-size data-@ ?dup if - dup ?clr-opstack ! abort" operand size mismatched" else dt-size data-! then then ; : _?opsize2 ( just store the operand size ) ( n -- ) --- 733,737 ---- ( n -- ) ?dup if dt-size data-@ ?dup if - dup ?clr-opstack ! asm-abort" operand size mismatched" else dt-size data-! then then ; : _?opsize2 ( just store the operand size ) ( n -- ) *************** *** 724,728 **** ( n -- ) ?dup if ad-size data-@ ?dup if - dup ?clr-opstack ! abort" address size mismatched" else ad-size data-! then then ; : _?adsize2 ( just store the address size ) ( n -- ) --- 742,746 ---- ( n -- ) ?dup if ad-size data-@ ?dup if - dup ?clr-opstack ! asm-abort" address size mismatched" else ad-size data-! then then ; : _?adsize2 ( just store the address size ) ( n -- ) *************** *** 733,737 **** ( -- ) ad-size data-@ 8bit = dup ?clr-opstack ! abort" SHORT not allowed with this instruction" ; ' _?short is ?short --- 751,755 ---- ( -- ) ad-size data-@ 8bit = dup ?clr-opstack ! asm-abort" SHORT not allowed with this instruction" ; ' _?short is ?short *************** *** 743,747 **** ( flag -- ) dup ?clr-opstack ! abort" branch offset too big to fit specified width" ; ' _?toofar is ?toofar --- 761,765 ---- ( flag -- ) dup ?clr-opstack ! asm-abort" branch offset too big to fit specified width" ; ' _?toofar is ?toofar *************** *** 749,753 **** ( -- ) frtable frmax 0 do dup data-@ dup ?clr-opstack ! abort" unresolved forward reference" cell+ cell+ loop drop ; ' _?unres is ?unres --- 767,771 ---- ( -- ) frtable frmax 0 do dup data-@ dup ?clr-opstack ! asm-abort" unresolved forward reference" cell+ cell+ loop drop ; ' _?unres is ?unres *************** *** 755,759 **** ( -- ) clr-opstack -1 ! abort" no or unknown address size" ; ' _?noadsize is ?noadsize --- 773,777 ---- ( -- ) clr-opstack -1 ! asm-abort" no or unknown address size" ; ' _?noadsize is ?noadsize *************** *** 761,765 **** ( max allowed operands -- ) op-depth < dup ?clr-opstack ! abort" too many operands" ; ' _?toomanyops is ?toomanyops --- 779,783 ---- ( max allowed operands -- ) op-depth < dup ?clr-opstack ! asm-abort" too many operands" ; ' _?toomanyops is ?toomanyops *************** *** 767,771 **** ( -- ) ad-size data-@ 32bit = dup ?clr-opstack ! abort" FAR references not allowed with this instruction" ; ' _?nofar is ?nofar --- 785,789 ---- ( -- ) ad-size data-@ 32bit = dup ?clr-opstack ! asm-abort" FAR references not allowed with this instruction" ; ' _?nofar is ?nofar *************** *** 773,777 **** ( flag -- ) dup ?clr-opstack ! abort" operand mismatch" ; : _?match ( error if the parameters match ) --- 791,795 ---- ( flag -- ) dup ?clr-opstack ! asm-abort" operand mismatch" ; : _?match ( error if the parameters match ) *************** *** 788,792 **** ( -- ) op-depth dup ?clr-opstack ! abort" unconsumed operands" ; ' _?finished is ?finished --- 806,810 ---- ( -- ) op-depth dup ?clr-opstack ! asm-abort" unconsumed operands" ; ' _?finished is ?finished *************** *** 794,798 **** ( max type allowed -- ) maxtype data-@ < dup ?clr-opstack ! abort" addressing mode not allowed" ; ' _?badtype is ?badtype --- 812,816 ---- ( max type allowed -- ) maxtype data-@ < dup ?clr-opstack ! asm-abort" addressing mode not allowed" ; ' _?badtype is ?badtype *************** *** 800,804 **** ( flag -- ) dup ?clr-opstack ! abort" illegal operand combination" ; ' _?badcombine is ?badcombine --- 818,822 ---- ( flag -- ) dup ?clr-opstack ! asm-abort" illegal operand combination" ; ' _?badcombine is ?badcombine *************** *** 806,815 **** ( n -- ) op-depth > dup ?clr-opstack ! abort" not enough operands" ; ' _?notenough is ?notenough : _?noimmed ( is there an illegal immediate operand? ) ( -- ) has-immed? dup ?clr-opstack ! abort" immediate operands not allowed with this instruction" ; ' _?noimmed is ?noimmed --- 824,833 ---- ( n -- ) op-depth > dup ?clr-opstack ! asm-abort" not enough operands" ; ' _?notenough is ?notenough : _?noimmed ( is there an illegal immediate operand? ) ( -- ) has-immed? dup ?clr-opstack ! asm-abort" immediate operands not allowed with this instruction" ; ' _?noimmed is ?noimmed *************** *** 817,821 **** ( flag -- ) dup ?clr-opstack ! abort" illegal address mode" ; ' _?badmode is ?badmode --- 835,839 ---- ( flag -- ) dup ?clr-opstack ! asm-abort" illegal address mode" ; ' _?badmode is ?badmode *************** *** 823,827 **** ( -- ) direction? 0= mod-r/m data-@ 0c0 < and dup ?clr-opstack ! abort" destination must be a register" ; ' _?reg,r/m is ?reg,r/m --- 841,845 ---- ( -- ) direction? 0= mod-r/m data-@ 0c0 < and dup ?clr-opstack ! asm-abort" destination must be a register" ; ' _?reg,r/m is ?reg,r/m *************** *** 829,833 **** ( -- ) direction? mod-r/m data-@ 0c0 < and dup ?clr-opstack ! abort" source must be a register" ; ' _?r/m,reg is ?r/m,reg --- 847,851 ---- ( -- ) direction? mod-r/m data-@ 0c0 < and dup ?clr-opstack ! asm-abort" source must be a register" ; ' _?r/m,reg is ?r/m,reg *************** *** 835,839 **** ( -- ) mod-r/m data-@ 0bf > maybe-has-offset? 0= and dup ?clr-opstack ! abort" instruction requires a memory operand" ; ' _?mem is ?mem --- 853,857 ---- ( -- ) mod-r/m data-@ 0bf > maybe-has-offset? 0= and dup ?clr-opstack ! asm-abort" instruction requires a memory operand" ; ' _?mem is ?mem *************** *** 841,845 **** ( -- ) mod-r/m data-@ 0c0 < has-offset? or dup ?clr-opstack ! abort" this instruction may only use registers" ; ' _?reg is ?reg --- 859,863 ---- ( -- ) mod-r/m data-@ 0c0 < has-offset? or dup ?clr-opstack ! asm-abort" this instruction may only use registers" ; ' _?reg is ?reg *************** *** 936,939 **** --- 954,958 ---- : inst-pre create data-, does> data-@ inst-prefix data-! ; in-asm + 2e seg-pre cs: 36 seg-pre ss: *************** *** 956,959 **** --- 975,979 ---- sp@ sp-save data-@ swap - cell/ ; + also hidden ( create an assembly mnemonic ) : compile-opcode ( compile the bytes in an opcode ) *************** *** 964,969 **** ( offset 1 -- parameter used to generate the code ) ?dup if ! dup cell+ data-@ swap data-@ register-asm execute then ; defer save-inst ( save the current instruction -- used in postfix mode ) --- 984,990 ---- ( offset 1 -- parameter used to generate the code ) ?dup if ! dup to pfa-mnemonic dup cell+ data-@ swap data-@ register-asm execute then ; + previous defer save-inst ( save the current instruction -- used in postfix mode ) *************** *** 1796,1814 **** : no-xmm-move ( opcode - opcode flag ) ! dup 29 <> over 7F <> and ! over 11 <> and over 13 <> and over 17 <> and over D7 <> and ; : xmm-to-xmm ( opcode - opcode flag ) dup C2 = over C6 = or ; \ case: cmpss shufps shufpd ! : no-xmm-to-xmm? ( - flag ) mod-r/m data-@ FC <> ; : xmm-to-m ( opcode - opcode flag ) dup 13 = over 17 = or ; \ case: movhpd movlpd ! : no-xmm-to-m ( - flag ) mod-r/m data-@ dup C0 <> over C1 <> and over 1 <> and swap 0B <> and ; : m-to-xmm ( opcode - opcode flag ) dup 12 = over 16 = or ; \ case: movhpd movlpd ! : no-m-to-xmm ( - flag ) mod-r/m data-@ dup C1 <> over 13 <> and over 1 <> and swap 0 <> and ; ! : r32? ( - flag ) mod-r/m data-@ dup D3 = over CB = or over D9 = or over DA = or swap DB = or ; ! : not-to-r32? ( - flag ) mod-r/m data-@ DA <> ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) --- 1817,1844 ---- : no-xmm-move ( opcode - opcode flag ) ! dup 29 <> over 7F <> and over 13 <> and over 17 <> and over D7 <> and ; + : xmm-to-xmm ( opcode - opcode flag ) dup C2 = over C6 = or ; \ case: cmpss shufps shufpd ! : no-xmm-to-xmm? ( - flag ) mod-r/m data-@ dup FC <> swap CA <> and ; : xmm-to-m ( opcode - opcode flag ) dup 13 = over 17 = or ; \ case: movhpd movlpd ! : no-xmm-to-m ( - flag ) mod-r/m data-@ dup C0 <> over C1 <> and ! over 1 <> and swap 0B <> and ; : m-to-xmm ( opcode - opcode flag ) dup 12 = over 16 = or ; \ case: movhpd movlpd ! : no-m-to-xmm ( - flag ) mod-r/m data-@ dup C1 <> over 13 <> and ! over 1 <> and swap 0 <> and ; ! : r32? ( - flag ) mod-r/m data-@ dup D3 = over C3 = or over C0 = or ! over C1 = or over C2 = or over CB = or over D9 = or ! over DA = or swap DB = or ; ! ! : no-r32-check ( opcode - opcode flag ) dup D7 <> over 13 <> and over 17 <> and over 57 <> and ! over 58 <> and ; ! ! : not-to-r32? ( - flag ) mod-r/m data-@ dup DA <> over C7 <> and over CF <> and ! over D7 <> and swap DF <> and ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 1819,1827 **** endif endif ?noimmed ! xmm-to-xmm no-xmm-to-xmm? and ABORT" Operand must be xmmreg,xmmreg" ! no-xmm-move xmm-dir? and ABORT" Operand r/m,xmmreg not allowed" ! dup D7 = not-to-r32? and ABORT" Operand must be r32,xmmreg." \ case: pmovmskb ! xmm-to-m no-xmm-to-m and ABORT" Operand must be m,xmmreg." ! m-to-xmm no-m-to-xmm and ABORT" Operand must be xmmreg,m." code-c, compile-fields ; --- 1849,1858 ---- endif endif ?noimmed ! xmm-to-xmm no-xmm-to-xmm? and asm-abort" Operand must be xmmreg,xmmreg" ! no-xmm-move xmm-dir? and asm-abort" Operand r/m,xmmreg not allowed" ! dup D7 = not-to-r32? and asm-abort" Operand must be r32,xmmreg." \ case: pmovmskb ! xmm-to-m no-xmm-to-m and asm-abort" Operand must be m,xmmreg." ! m-to-xmm no-m-to-xmm and asm-abort" Operand must be xmmreg,m." ! no-r32-check r32? and asm-abort" Operand r32 not allowed." code-c, compile-fields ; *************** *** 1832,1836 **** if 0x10 or endif ! endif ?noimmed r32? ABORT" Operand r32 not allowed." code-c, compile-fields ; --- 1863,1867 ---- if 0x10 or endif ! endif ?noimmed r32? asm-abort" Operand r32 not allowed." code-c, compile-fields ; *************** *** 2273,2275 **** --- 2304,2307 ---- only forth definitions base ! + \s |
From: Jos v.d.V. <jo...@us...> - 2015-01-16 17:54:31
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28494 Modified Files: 486ASM.F 586ASMCM.f Log Message: Jos Added more operand checking and instructions Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** 586ASMCM.f 12 Jan 2015 18:29:42 -0000 1.9 --- 586ASMCM.f 16 Jan 2015 17:54:29 -0000 1.10 *************** *** 33,36 **** --- 33,39 ---- 0x66 pre-dxmm-compile ; + : movd-compile ( param -- | x \ param -- | x \ x \ param -- ) + 0x66 code-c, 0x0F code-c, (movd-compile) ; + : F3-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) 0xF3 pre-dxmm-compile ; *************** *** 223,227 **** 0x6E ' dxmm-compile opcode cvttpd2dq ! 0x6E ' 66-pf-compile1 opcode movd 0x6F ' 66-dxmm-compile opcode movdqa 0x6F ' F3-dxmm-compile opcode movdqu --- 226,231 ---- 0x6E ' dxmm-compile opcode cvttpd2dq ! \ 0x6E ' 66-pf-compile1 opcode movd ! 0x6E ' movd-compile opcode movd 0x6F ' 66-dxmm-compile opcode movdqa 0x6F ' F3-dxmm-compile opcode movdqu *************** *** 258,261 **** --- 262,267 ---- 0xC6 ' dxmm-compile-no-disp opcode shufpd + 0xD7 ' 66-dxmm-compile opcode pmovmskb + 0xE6 ' pre-xmm-compile opcode cvtdq2pd 0xE6 ' F2-dxmm-compile opcode cvtpd2dq Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** 486ASM.F 12 Jan 2015 18:29:42 -0000 1.14 --- 486ASM.F 16 Jan 2015 17:54:29 -0000 1.15 *************** *** 1793,1807 **** : (mmx-dir?) ( x \ param -- n ) mmxreg generic-entry2 mmx-dir? ! if 10 or ! endif ! ; : no-xmm-move ( opcode - opcode flag ) ! dup 29 <> ! over 7F <> and ! over 11 <> and ! over 13 <> and ! over 17 <> and ! ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) --- 1793,1814 ---- : (mmx-dir?) ( x \ param -- n ) mmxreg generic-entry2 mmx-dir? ! if 10 or then ; : no-xmm-move ( opcode - opcode flag ) ! dup 29 <> over 7F <> and ! over 11 <> and over 13 <> and ! over 17 <> and over D7 <> and ; ! ! : xmm-to-xmm ( opcode - opcode flag ) dup C2 = over C6 = or ; \ case: cmpss shufps shufpd ! : no-xmm-to-xmm? ( - flag ) mod-r/m data-@ FC <> ; ! ! : xmm-to-m ( opcode - opcode flag ) dup 13 = over 17 = or ; \ case: movhpd movlpd ! : no-xmm-to-m ( - flag ) mod-r/m data-@ dup C0 <> over C1 <> and over 1 <> and swap 0B <> and ; ! ! : m-to-xmm ( opcode - opcode flag ) dup 12 = over 16 = or ; \ case: movhpd movlpd ! : no-m-to-xmm ( - flag ) mod-r/m data-@ dup C1 <> over 13 <> and over 1 <> and swap 0 <> and ; ! ! : r32? ( - flag ) mod-r/m data-@ dup D3 = over CB = or over D9 = or over DA = or swap DB = or ; ! : not-to-r32? ( - flag ) mod-r/m data-@ DA <> ; : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 1811,1818 **** if 0x11 or endif ! endif ! ?noimmed no-xmm-move xmm-dir? and ABORT" operand r/m,xmmreg not allowed" ! code-c, compile-fields ! ; ( the instructions ) --- 1818,1837 ---- if 0x11 or endif ! endif ?noimmed ! xmm-to-xmm no-xmm-to-xmm? and ABORT" Operand must be xmmreg,xmmreg" ! no-xmm-move xmm-dir? and ABORT" Operand r/m,xmmreg not allowed" ! dup D7 = not-to-r32? and ABORT" Operand must be r32,xmmreg." \ case: pmovmskb ! xmm-to-m no-xmm-to-m and ABORT" Operand must be m,xmmreg." ! m-to-xmm no-m-to-xmm and ABORT" Operand must be xmmreg,m." ! code-c, compile-fields ; ! ! : (movd-compile) ( param -- | x \ param -- | x \ x \ param -- ) ! (mmx-dir?) ! xmm/mmx-prefix data-@ 2 = ! if xmm-dir? ! if 0x10 or ! endif ! endif ?noimmed r32? ABORT" Operand r32 not allowed." ! code-c, compile-fields ; ( the instructions ) |
From: Jos v.d.V. <jo...@us...> - 2015-01-10 17:12:55
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25301 Modified Files: 486ASM.F 586ASMCM.f Log Message: Jos Solved a number of issues. Only 8 to go. Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** 586ASMCM.f 25 Dec 2014 13:55:00 -0000 1.7 --- 586ASMCM.f 10 Jan 2015 17:12:53 -0000 1.8 *************** *** 16,35 **** 0x0F code-c, (xmm-compile) ; - : pre-xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) - 0xF3 code-c, xmm-compile ; - : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) 0x66 code-c, xmm-compile ; ! : pre-dxmm-compile ( param Pre -- | x \ param Pre -- | x \ x \ param Pre -- ) ! code-c, 0x0F code-c, mmxreg generic-entry2 mmx-dir? ! if 1 or ! endif ! xmm/mmx-prefix data-@ 2 = ! if xmm-dir? ! if 1 or ! endif ! endif ! ?noimmed code-c, compile-fields ; : F2-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) --- 16,28 ---- 0x0F code-c, (xmm-compile) ; : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) 0x66 code-c, xmm-compile ; ! ! : pre-xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0xF3 code-c, xmm-compile ; ! ! : pre-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! code-c, xmm-compile ; : F2-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) *************** *** 42,45 **** --- 35,60 ---- 0xF3 pre-dxmm-compile ; + + : pf-compile1 ( param -- | x \ param -- | x \ x \ param -- ) + (mmx-dir?) + xmm/mmx-prefix data-@ 2 = + if xmm-dir? + if 1+ + endif + endif + ?noimmed code-c, compile-fields ; + + : 66-pf-compile1 ( param -- | x \ param -- | x \ x \ param -- ) + 0x66 code-c, 0x0F code-c, pf-compile1 ; + + : 0f-compile1 ( param -- | x \ param -- | x \ x \ param -- ) + 0x0F code-c, pf-compile1 ; + + : xmm-compile-no-disp ( param -- | x \ param -- | x \ x \ param -- ) + 0x0F code-c, true no-do-disp data-! (xmm-compile) ; + + : dxmm-compile-no-disp ( param -- | x \ param -- | x \ x \ param -- ) + 0x66 code-c, true no-do-disp data-! xmm-compile ; + in-asm dup-warning-off *************** *** 95,99 **** \ xmm instructions 0x10 ' xmm-compile opcode movups ! 0x10 ' dxmm-compile opcode movupd 0x10 ' pre-xmm-compile opcode movss --- 110,114 ---- \ xmm instructions 0x10 ' xmm-compile opcode movups ! 0x10 ' 66-dxmm-compile opcode movupd 0x10 ' pre-xmm-compile opcode movss *************** *** 111,140 **** 0x16 ' dxmm-compile opcode movhpd ! 0x28 ' xmm-compile opcode movaps ! 0x28 ' dxmm-compile opcode movapd 0x2A ' xmm-compile opcode cvtpi2ps - 0x2A ' dxmm-compile opcode cvtpi2pd 0x2A ' pre-xmm-compile opcode cvtsi2ss 0x2A ' F2-dxmm-compile opcode cvtsi2sd ! 0x2C ' xmm-compile opcode cvttps2pi ! 0x2C ' dxmm-compile opcode cvttpd2pi ! 0x2C ' pre-xmm-compile opcode cvttss2si ! 0x2C ' F2-dxmm-compile opcode cvttsd2si ! ! 0x2D ' xmm-compile opcode cvtps2pi ! 0x2D ' dxmm-compile opcode cvtpd2pi ! 0x2D ' pre-xmm-compile opcode cvtss2si ! 0x2D ' F2-dxmm-compile opcode cvtsd2si ! ! 0x2E ' xmm-compile opcode ucomiss ! 0x2E ' dxmm-compile opcode ucomisd ! ! 0x2F ' xmm-compile opcode comiss ! 0x2F ' dxmm-compile opcode comisd ! 0x50 ' xmm-compile opcode movmskps ! 0x50 ' dxmm-compile opcode movmskpd 0x51 ' xmm-compile opcode sqrtps --- 126,141 ---- 0x16 ' dxmm-compile opcode movhpd ! 0x28 ' 0f-compile1 opcode movaps ! 0x28 ' 66-pf-compile1 opcode movapd 0x2A ' xmm-compile opcode cvtpi2ps 0x2A ' pre-xmm-compile opcode cvtsi2ss 0x2A ' F2-dxmm-compile opcode cvtsi2sd ! \ 0x2E ' xmm-compile opcode ucomiss ! \ 0x2E ' dxmm-compile opcode ucomisd ! \ 0x2F ' xmm-compile opcode comiss ! \ 0x2F ' dxmm-compile opcode comisd 0x51 ' xmm-compile opcode sqrtps *************** *** 144,153 **** 0x52 ' xmm-compile opcode rsqrtps - 0x52 ' dxmm-compile opcode rsqrtpd 0x52 ' pre-xmm-compile opcode rsqrtss 0x52 ' F2-dxmm-compile opcode rsqrtsd 0x53 ' xmm-compile opcode rcpps - 0x53 ' dxmm-compile opcode rcppd 0x53 ' pre-xmm-compile opcode rcpss 0x53 ' F2-dxmm-compile opcode rcpds --- 145,152 ---- *************** *** 178,182 **** 0x5B ' xmm-compile opcode cvtdq2ps - 0x5B ' dxmm-compile opcode cvttpd2dq 0x5B ' 66-dxmm-compile opcode cvtps2dq 0x5B ' F3-dxmm-compile opcode cvttps2dq --- 177,180 ---- *************** *** 202,212 **** 0x5F ' F2-dxmm-compile opcode maxsd ! 0xC2 ' xmm-compile opcode cmpps ! 0xC2 ' dxmm-compile opcode cmppd ! 0xC2 ' pre-xmm-compile opcode cmpss ! 0xC2 ' F2-dxmm-compile opcode xcmpsd ! 0xC6 ' xmm-compile opcode shufps ! 0xC6 ' dxmm-compile opcode shufpd 0xE6 ' pre-xmm-compile opcode cvtdq2pd --- 200,216 ---- 0x5F ' F2-dxmm-compile opcode maxsd ! 0x6E ' dxmm-compile opcode cvttpd2dq ! 0x6E ' 66-pf-compile1 opcode movd ! 0x6F ' 66-dxmm-compile opcode movdqa ! ! ! \ 0xC2 ' xmm-compile-no-disp opcode cmpps ! \ 0xC2 ' dxmm-compile opcode cmppd ! \ 0xC2 ' pre-xmm-compile opcode cmpss ! \ 0xC2 ' F2-dxmm-compile opcode xcmpsd ! ! 0xC6 ' xmm-compile-no-disp opcode shufps ! 0xC6 ' dxmm-compile-no-disp opcode shufpd 0xE6 ' pre-xmm-compile opcode cvtdq2pd Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** 486ASM.F 12 Dec 2014 12:20:38 -0000 1.12 --- 486ASM.F 10 Jan 2015 17:12:53 -0000 1.13 *************** *** 527,530 **** --- 527,531 ---- variable addmode ( addressing mode flags ) variable xmm/mmx-prefix \ xmm (2) or mmx (1) or neither (0) regs used ) + variable no-do-disp ( No change to the mod-r/m byte ) : reset-vars ( store 0 into all instruction coding variables ) *************** *** 1253,1258 **** : do-disp ( process a displacement ) ( -- ) ! mod-r/m data-@ dup 0bf > if c0-8* then 5 + a16bit? if 1+ then ! code-c, has-full-off ; : do-[reg*n] ( process a naked index ) ( -- ) --- 1254,1262 ---- : do-disp ( process a displacement ) ( -- ) ! mod-r/m data-@ no-do-disp data-@ ! if false no-do-disp data-! code-c, ! else dup 0bf > if c0-8* then ! 5 + a16bit? if 1+ then code-c, has-full-off ! then ; : do-[reg*n] ( process a naked index ) ( -- ) *************** *** 1787,1794 **** endcase ; ! : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) mmxreg generic-entry2 mmx-dir? if 10 or endif xmm/mmx-prefix data-@ 2 = if xmm-dir? --- 1791,1802 ---- endcase ; ! : (mmx-dir?) ( x \ param -- n ) mmxreg generic-entry2 mmx-dir? if 10 or endif + ; + + : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) + (mmx-dir?) xmm/mmx-prefix data-@ 2 = if xmm-dir? *************** *** 1799,1803 **** ; - ( the instructions ) in-asm --- 1807,1810 ---- |
From: Jos v.d.V. <jo...@us...> - 2014-12-23 13:25:59
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25767 Modified Files: 586ASMCM.f Log Message: Jos Added MOVLPD MOVHPD and a number of CVT conversions Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** 586ASMCM.f 12 Dec 2014 12:20:38 -0000 1.5 --- 586ASMCM.f 23 Dec 2014 13:25:49 -0000 1.6 *************** *** 16,29 **** : xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! $0F code-c, (xmm-compile) ; ! ! : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! $66 code-c, xmm-compile ; : pre-xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! $F3 code-c, xmm-compile ; ! : pre-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! $F2 code-c, $0F code-c, mmxreg generic-entry2 mmx-dir? if 1 or endif --- 16,29 ---- : xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0x0F code-c, (xmm-compile) ; : pre-xmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0xF3 code-c, xmm-compile ; ! : dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0x66 code-c, xmm-compile ; ! ! : pre-dxmm-compile ( param Pre -- | x \ param -- | x \ x \ param -- ) ! code-c, 0x0F code-c, mmxreg generic-entry2 mmx-dir? if 1 or endif *************** *** 33,41 **** endif endif ! ?noimmed code-c, compile-fields ! ; ! : pre-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! $F2 code-c, xmm-compile ; in-asm --- 33,46 ---- endif endif ! ?noimmed code-c, compile-fields ; ! : F2-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0xF2 pre-dxmm-compile ; ! ! : 66-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0x66 pre-dxmm-compile ; ! ! : F3-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) ! 0xF3 pre-dxmm-compile ; in-asm *************** *** 90,101 **** dup-warning-on - \ xmm instructions ! 0x10 ' xmm-compile opcode movups ! 0x10 ' dxmm-compile opcode movupd ! 0x10 ' pre-xmm-compile opcode movss dup-warning-off ! 0x10 ' pre-dxmm-compile opcode movsd dup-warning-on 0x14 ' xmm-compile opcode unpcklps 0x14 ' dxmm-compile opcode unpcklpd --- 95,109 ---- dup-warning-on \ xmm instructions ! 0x10 ' xmm-compile opcode movups \ m128 ! 0x10 ' dxmm-compile opcode movupd \ m128 ! 0x10 ' pre-xmm-compile opcode movss \ m32 ! dup-warning-off ! 0x10 ' F2-dxmm-compile opcode movsd dup-warning-on + + 0x12 ' dxmm-compile opcode movlpd + 0x14 ' xmm-compile opcode unpcklps 0x14 ' dxmm-compile opcode unpcklpd *************** *** 103,106 **** --- 111,116 ---- 0x15 ' dxmm-compile opcode unpckhpd + 0x16 ' dxmm-compile opcode movhpd + 0x28 ' xmm-compile opcode movaps 0x28 ' dxmm-compile opcode movapd *************** *** 109,126 **** 0x2A ' dxmm-compile opcode cvtpi2pd 0x2A ' pre-xmm-compile opcode cvtsi2ss ! 0x2A ' pre-dxmm-compile opcode cvtsi2sd 0x2C ' xmm-compile opcode cvttps2pi 0x2C ' dxmm-compile opcode cvttpd2pi 0x2C ' pre-xmm-compile opcode cvttss2si ! 0x2C ' pre-dxmm-compile opcode cvttsd2si 0x2D ' xmm-compile opcode cvtps2pi 0x2D ' dxmm-compile opcode cvtpd2pi 0x2D ' pre-xmm-compile opcode cvtss2si ! 0x2D ' pre-dxmm-compile opcode cvtsd2si ! ! 0xE6 ' pre-xmm-compile opcode cvtdq2pd ! 0xE6 ' pre-dxmm-compile opcode cvtpd2dq 0x2E ' xmm-compile opcode ucomiss --- 119,133 ---- 0x2A ' dxmm-compile opcode cvtpi2pd 0x2A ' pre-xmm-compile opcode cvtsi2ss ! 0x2A ' F2-dxmm-compile opcode cvtsi2sd 0x2C ' xmm-compile opcode cvttps2pi 0x2C ' dxmm-compile opcode cvttpd2pi 0x2C ' pre-xmm-compile opcode cvttss2si ! 0x2C ' F2-dxmm-compile opcode cvttsd2si 0x2D ' xmm-compile opcode cvtps2pi 0x2D ' dxmm-compile opcode cvtpd2pi 0x2D ' pre-xmm-compile opcode cvtss2si ! 0x2D ' F2-dxmm-compile opcode cvtsd2si 0x2E ' xmm-compile opcode ucomiss *************** *** 130,141 **** 0x2F ' dxmm-compile opcode comisd - 0xC2 ' xmm-compile opcode cmpps - 0xC2 ' dxmm-compile opcode cmppd - 0xC2 ' pre-xmm-compile opcode cmpss - 0xC2 ' pre-dxmm-compile opcode xcmpsd - - 0xC6 ' xmm-compile opcode shufps - 0xC6 ' dxmm-compile opcode shufpd - 0x50 ' xmm-compile opcode movmskps 0x50 ' dxmm-compile opcode movmskpd --- 137,140 ---- *************** *** 144,158 **** 0x51 ' dxmm-compile opcode sqrtpd 0x51 ' pre-xmm-compile opcode sqrtss ! 0x51 ' pre-dxmm-compile opcode sqrtsd 0x52 ' xmm-compile opcode rsqrtps 0x52 ' dxmm-compile opcode rsqrtpd 0x52 ' pre-xmm-compile opcode rsqrtss ! 0x52 ' pre-dxmm-compile opcode rsqrtsd 0x53 ' xmm-compile opcode rcpps 0x53 ' dxmm-compile opcode rcppd 0x53 ' pre-xmm-compile opcode rcpss ! 0x53 ' pre-dxmm-compile opcode rcpds 0x54 ' xmm-compile opcode andps --- 143,157 ---- 0x51 ' dxmm-compile opcode sqrtpd 0x51 ' pre-xmm-compile opcode sqrtss ! 0x51 ' F2-dxmm-compile opcode sqrtsd 0x52 ' xmm-compile opcode rsqrtps 0x52 ' dxmm-compile opcode rsqrtpd 0x52 ' pre-xmm-compile opcode rsqrtss ! 0x52 ' F2-dxmm-compile opcode rsqrtsd 0x53 ' xmm-compile opcode rcpps 0x53 ' dxmm-compile opcode rcppd 0x53 ' pre-xmm-compile opcode rcpss ! 0x53 ' F2-dxmm-compile opcode rcpds 0x54 ' xmm-compile opcode andps *************** *** 168,199 **** 0x58 ' dxmm-compile opcode addpd 0x58 ' pre-xmm-compile opcode addss ! 0x58 ' pre-dxmm-compile opcode addsd 0x59 ' xmm-compile opcode mulps 0x59 ' dxmm-compile opcode mulpd 0x59 ' pre-xmm-compile opcode mulss ! 0x59 ' pre-dxmm-compile opcode mulsd 0x5B ' dxmm-compile opcode cvttpd2dq 0x5C ' xmm-compile opcode subps 0x5C ' dxmm-compile opcode subpd 0x5C ' pre-xmm-compile opcode subss ! 0x5C ' pre-dxmm-compile opcode subsd 0x5D ' xmm-compile opcode minps 0x5D ' dxmm-compile opcode minpd 0x5D ' pre-xmm-compile opcode minss ! 0x5D ' pre-dxmm-compile opcode minsd 0x5E ' xmm-compile opcode divps 0x5E ' dxmm-compile opcode divpd 0x5E ' pre-xmm-compile opcode divss ! 0x5E ' pre-dxmm-compile opcode divsd 0x5F ' xmm-compile opcode maxps 0x5F ' dxmm-compile opcode maxpd 0x5F ' pre-xmm-compile opcode maxss ! 0x5F ' pre-dxmm-compile opcode maxsd in-previous --- 167,217 ---- 0x58 ' dxmm-compile opcode addpd 0x58 ' pre-xmm-compile opcode addss ! 0x58 ' F2-dxmm-compile opcode addsd 0x59 ' xmm-compile opcode mulps 0x59 ' dxmm-compile opcode mulpd 0x59 ' pre-xmm-compile opcode mulss ! 0x59 ' F2-dxmm-compile opcode mulsd ! ! 0x5A ' xmm-compile opcode cvtps2pd ! 0x5A ' 66-dxmm-compile opcode cvtpd2ps ! 0x5A ' F2-dxmm-compile opcode cvtsd2ss ! 0x5A ' F3-dxmm-compile opcode cvtss2sd + 0x5B ' xmm-compile opcode cvtdq2ps 0x5B ' dxmm-compile opcode cvttpd2dq + 0x5B ' 66-dxmm-compile opcode cvtps2dq + 0x5B ' F3-dxmm-compile opcode cvttps2dq 0x5C ' xmm-compile opcode subps 0x5C ' dxmm-compile opcode subpd 0x5C ' pre-xmm-compile opcode subss ! 0x5C ' F2-dxmm-compile opcode subsd 0x5D ' xmm-compile opcode minps 0x5D ' dxmm-compile opcode minpd 0x5D ' pre-xmm-compile opcode minss ! 0x5D ' F2-dxmm-compile opcode minsd 0x5E ' xmm-compile opcode divps 0x5E ' dxmm-compile opcode divpd 0x5E ' pre-xmm-compile opcode divss ! 0x5E ' F2-dxmm-compile opcode divsd 0x5F ' xmm-compile opcode maxps 0x5F ' dxmm-compile opcode maxpd 0x5F ' pre-xmm-compile opcode maxss ! 0x5F ' F2-dxmm-compile opcode maxsd ! ! 0xC2 ' xmm-compile opcode cmpps ! 0xC2 ' dxmm-compile opcode cmppd ! 0xC2 ' pre-xmm-compile opcode cmpss ! 0xC2 ' F2-dxmm-compile opcode xcmpsd ! ! 0xC6 ' xmm-compile opcode shufps ! 0xC6 ' dxmm-compile opcode shufpd ! ! 0xE6 ' pre-xmm-compile opcode cvtdq2pd ! 0xE6 ' F2-dxmm-compile opcode cvtpd2dq in-previous |
From: Jos v.d.V. <jo...@us...> - 2014-12-12 12:20:40
|
Update of /cvsroot/win32forth/win32forth/src In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv30815 Modified Files: 486ASM.F 586ASMCM.f Log Message: Jos minor changes Index: 586ASMCM.f =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/586ASMCM.f,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** 586ASMCM.f 10 Dec 2014 12:27:11 -0000 1.4 --- 586ASMCM.f 12 Dec 2014 12:20:38 -0000 1.5 *************** *** 24,28 **** $F3 code-c, xmm-compile ; ! : pre-dxmm-compil1 ( param -- | x \ param -- | x \ x \ param -- ) $F2 code-c, $0F code-c, mmxreg generic-entry2 mmx-dir? if 1 or --- 24,28 ---- $F3 code-c, xmm-compile ; ! : pre-dxmm-compile ( param -- | x \ param -- | x \ x \ param -- ) $F2 code-c, $0F code-c, mmxreg generic-entry2 mmx-dir? if 1 or *************** *** 88,198 **** 0xc0df ' fmisc-compile opcode ffreep dup-warning-on \ xmm instructions ! $10 ' xmm-compile opcode movups ! $10 ' dxmm-compile opcode movupd ! $10 ' pre-xmm-compile opcode movss dup-warning-off ! $10 ' pre-dxmm-compil1 opcode movsd dup-warning-on ! $14 ' xmm-compile opcode unpcklps ! $14 ' dxmm-compile opcode unpcklpd ! $15 ' xmm-compile opcode unpckhps ! $15 ' dxmm-compile opcode unpckhpd ! $28 ' xmm-compile opcode movaps ! $28 ' dxmm-compile opcode movapd ! $2A ' xmm-compile opcode cvtpi2ps ! $2A ' dxmm-compile opcode cvtpi2pd ! $2A ' pre-xmm-compile opcode cvtsi2ss ! $2A ' pre-dxmm-compile opcode cvtsi2sd ! $2C ' xmm-compile opcode cvttps2pi ! $2C ' dxmm-compile opcode cvttpd2pi ! $2C ' pre-xmm-compile opcode cvttss2si ! $2C ' pre-dxmm-compile opcode cvttsd2si ! $2D ' xmm-compile opcode cvtps2pi ! $2D ' dxmm-compile opcode cvtpd2pi ! $2D ' pre-xmm-compile opcode cvtss2si ! $2D ' pre-dxmm-compile opcode cvtsd2si ! $E6 ' pre-xmm-compile opcode cvtdq2pd ! $E6 ' pre-dxmm-compile opcode cvtpd2dq ! $2E ' xmm-compile opcode ucomiss ! $2E ' dxmm-compile opcode ucomisd ! $2F ' xmm-compile opcode comiss ! $2F ' dxmm-compile opcode comisd ! $C2 ' xmm-compile opcode cmpps ! $C2 ' dxmm-compile opcode cmppd ! $C2 ' pre-xmm-compile opcode cmpss ! $C2 ' pre-dxmm-compile opcode xcmpsd ! $C6 ' xmm-compile opcode shufps ! $C6 ' dxmm-compile opcode shufpd ! $50 ' xmm-compile opcode movmskps ! $50 ' dxmm-compile opcode movmskpd ! $51 ' xmm-compile opcode sqrtps ! $51 ' dxmm-compile opcode sqrtpd ! $51 ' pre-xmm-compile opcode sqrtss ! $51 ' pre-dxmm-compile opcode sqrtsd ! $52 ' xmm-compile opcode rsqrtps ! $52 ' dxmm-compile opcode rsqrtpd ! $52 ' pre-xmm-compile opcode rsqrtss ! $52 ' pre-dxmm-compile opcode rsqrtsd ! $53 ' xmm-compile opcode rcpps ! $53 ' dxmm-compile opcode rcppd ! $53 ' pre-xmm-compile opcode rcpss ! $53 ' pre-dxmm-compile opcode rcpds ! $54 ' xmm-compile opcode andps ! $54 ' dxmm-compile opcode andpd ! $55 ' xmm-compile opcode andnps ! $55 ' dxmm-compile opcode andnpd ! $56 ' xmm-compile opcode orps ! $56 ' dxmm-compile opcode orpd ! $57 ' xmm-compile opcode xorps ! $57 ' dxmm-compile opcode xorpd ! $58 ' xmm-compile opcode addps ! $58 ' dxmm-compile opcode addpd ! $58 ' pre-xmm-compile opcode addss ! $58 ' pre-dxmm-compile opcode addsd ! $59 ' xmm-compile opcode mulps ! $59 ' dxmm-compile opcode mulpd ! $59 ' pre-xmm-compile opcode mulss ! $59 ' pre-dxmm-compile opcode mulsd ! $5B ' dxmm-compile opcode cvttpd2dq ! $5C ' xmm-compile opcode subps ! $5C ' dxmm-compile opcode subpd ! $5C ' pre-xmm-compile opcode subss ! $5C ' pre-dxmm-compile opcode subsd ! $5D ' xmm-compile opcode minps ! $5D ' dxmm-compile opcode minpd ! $5D ' pre-xmm-compile opcode minss ! $5D ' pre-dxmm-compile opcode minsd ! $5E ' xmm-compile opcode divps ! $5E ' dxmm-compile opcode divpd ! $5E ' pre-xmm-compile opcode divss ! $5E ' pre-dxmm-compile opcode divsd ! $5F ' xmm-compile opcode maxps ! $5F ' dxmm-compile opcode maxpd ! $5F ' pre-xmm-compile opcode maxss ! $5F ' pre-dxmm-compile opcode maxsd in-previous --- 88,199 ---- 0xc0df ' fmisc-compile opcode ffreep + dup-warning-on \ xmm instructions ! 0x10 ' xmm-compile opcode movups ! 0x10 ' dxmm-compile opcode movupd ! 0x10 ' pre-xmm-compile opcode movss dup-warning-off ! 0x10 ' pre-dxmm-compile opcode movsd dup-warning-on ! 0x14 ' xmm-compile opcode unpcklps ! 0x14 ' dxmm-compile opcode unpcklpd ! 0x15 ' xmm-compile opcode unpckhps ! 0x15 ' dxmm-compile opcode unpckhpd ! 0x28 ' xmm-compile opcode movaps ! 0x28 ' dxmm-compile opcode movapd ! 0x2A ' xmm-compile opcode cvtpi2ps ! 0x2A ' dxmm-compile opcode cvtpi2pd ! 0x2A ' pre-xmm-compile opcode cvtsi2ss ! 0x2A ' pre-dxmm-compile opcode cvtsi2sd ! 0x2C ' xmm-compile opcode cvttps2pi ! 0x2C ' dxmm-compile opcode cvttpd2pi ! 0x2C ' pre-xmm-compile opcode cvttss2si ! 0x2C ' pre-dxmm-compile opcode cvttsd2si ! 0x2D ' xmm-compile opcode cvtps2pi ! 0x2D ' dxmm-compile opcode cvtpd2pi ! 0x2D ' pre-xmm-compile opcode cvtss2si ! 0x2D ' pre-dxmm-compile opcode cvtsd2si ! 0xE6 ' pre-xmm-compile opcode cvtdq2pd ! 0xE6 ' pre-dxmm-compile opcode cvtpd2dq ! 0x2E ' xmm-compile opcode ucomiss ! 0x2E ' dxmm-compile opcode ucomisd ! 0x2F ' xmm-compile opcode comiss ! 0x2F ' dxmm-compile opcode comisd ! 0xC2 ' xmm-compile opcode cmpps ! 0xC2 ' dxmm-compile opcode cmppd ! 0xC2 ' pre-xmm-compile opcode cmpss ! 0xC2 ' pre-dxmm-compile opcode xcmpsd ! 0xC6 ' xmm-compile opcode shufps ! 0xC6 ' dxmm-compile opcode shufpd ! 0x50 ' xmm-compile opcode movmskps ! 0x50 ' dxmm-compile opcode movmskpd ! 0x51 ' xmm-compile opcode sqrtps ! 0x51 ' dxmm-compile opcode sqrtpd ! 0x51 ' pre-xmm-compile opcode sqrtss ! 0x51 ' pre-dxmm-compile opcode sqrtsd ! 0x52 ' xmm-compile opcode rsqrtps ! 0x52 ' dxmm-compile opcode rsqrtpd ! 0x52 ' pre-xmm-compile opcode rsqrtss ! 0x52 ' pre-dxmm-compile opcode rsqrtsd ! 0x53 ' xmm-compile opcode rcpps ! 0x53 ' dxmm-compile opcode rcppd ! 0x53 ' pre-xmm-compile opcode rcpss ! 0x53 ' pre-dxmm-compile opcode rcpds ! 0x54 ' xmm-compile opcode andps ! 0x54 ' dxmm-compile opcode andpd ! 0x55 ' xmm-compile opcode andnps ! 0x55 ' dxmm-compile opcode andnpd ! 0x56 ' xmm-compile opcode orps ! 0x56 ' dxmm-compile opcode orpd ! 0x57 ' xmm-compile opcode xorps ! 0x57 ' dxmm-compile opcode xorpd ! 0x58 ' xmm-compile opcode addps ! 0x58 ' dxmm-compile opcode addpd ! 0x58 ' pre-xmm-compile opcode addss ! 0x58 ' pre-dxmm-compile opcode addsd ! 0x59 ' xmm-compile opcode mulps ! 0x59 ' dxmm-compile opcode mulpd ! 0x59 ' pre-xmm-compile opcode mulss ! 0x59 ' pre-dxmm-compile opcode mulsd ! 0x5B ' dxmm-compile opcode cvttpd2dq ! 0x5C ' xmm-compile opcode subps ! 0x5C ' dxmm-compile opcode subpd ! 0x5C ' pre-xmm-compile opcode subss ! 0x5C ' pre-dxmm-compile opcode subsd ! 0x5D ' xmm-compile opcode minps ! 0x5D ' dxmm-compile opcode minpd ! 0x5D ' pre-xmm-compile opcode minss ! 0x5D ' pre-dxmm-compile opcode minsd ! 0x5E ' xmm-compile opcode divps ! 0x5E ' dxmm-compile opcode divpd ! 0x5E ' pre-xmm-compile opcode divss ! 0x5E ' pre-dxmm-compile opcode divsd ! 0x5F ' xmm-compile opcode maxps ! 0x5F ' dxmm-compile opcode maxpd ! 0x5F ' pre-xmm-compile opcode maxss ! 0x5F ' pre-dxmm-compile opcode maxsd in-previous Index: 486ASM.F =================================================================== RCS file: /cvsroot/win32forth/win32forth/src/486ASM.F,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** 486ASM.F 10 Dec 2014 12:27:11 -0000 1.11 --- 486ASM.F 12 Dec 2014 12:20:38 -0000 1.12 *************** *** 346,353 **** 9 constant treg ( a test register ) 0a constant freg ( a floating point register ) ! \ $0B constant offs ( offset; relative or absolute address ) \ reserved, not in use ! \ $0C constant moffs ( memory offset; relative or absolute address ) \ reserved not in use ! $0D constant mmxreg ( an MMX or 3D-Now! register ) ! $0E constant xmmreg ( an XMM register ) --- 346,353 ---- 9 constant treg ( a test register ) 0a constant freg ( a floating point register ) ! \ 0B constant offs ( offset; relative or absolute address ) \ reserved, not in use ! \ 0C constant moffs ( memory offset; relative or absolute address ) \ reserved not in use ! 0D constant mmxreg ( an MMX or 3D-Now! register ) ! 0E constant xmmreg ( an XMM register ) *************** *** 1789,1797 **** : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) mmxreg generic-entry2 mmx-dir? ! if $10 or endif xmm/mmx-prefix data-@ 2 = if xmm-dir? ! if $11 or endif endif --- 1789,1797 ---- : (xmm-compile) ( param -- | x \ param -- | x \ x \ param -- ) mmxreg generic-entry2 mmx-dir? ! if 10 or endif xmm/mmx-prefix data-@ 2 = if xmm-dir? ! if 11 or endif endif |