comment on flushing predecode queue (pre-Pentium) (DOSX)
> Anyway, what I wrote is I'm not sure if Intel retired their prescription
> of a short jump after mode change
I'm no x86 guru by any means, but the only example I could easily find (through a semi-brief search via Google) was this (not very helpful, I know, but anyways ...).
> > > I'm really surprised you are not aware of this point, considering the
> > > depth of your experience.
I tested it for him on my Intel 486 Sx, and 3.31 works while 3.30 doesn't. However, Japheth's AMD 486 worked fine either way. AFAIK, no one else reported any issues.
> OK, my 386 Mobo is dead but I'll try himemx on one of my 486 DXs
Jason Burgon (GVFM) and Blair Campbell (FreeDOS dude) both have 386s, so you could try asking one of them if you're truly paranoid.
P.S. I tried reassembling HIMEMX 3.32, but here's the problem:
* JWASM17S.ZIP has a (NT-only?) WLINK.EXE that is apparently modified (but buggy?), so using that won't work (no .EXE generated!), but WLINK/DOS from 1.7a-RC1 does:
---------------------------------------------------------------------
JWasm v1.7, based on Open Watcom Assembler (WASM)
Portions Copyright (c) 1992-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
himemx.asm: 3836 lines, 0 warnings, 0 errors
Open Watcom Linker Version 1.7
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
Warning! W1107: undefined system name: dos
loading object files
Error! E3002: ** internal ** - format not decided
---------------------------------------------------------------------
JWasm v1.7, based on Open Watcom Assembler (WASM)
Portions Copyright (c) 1992-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
himemx.asm: 3836 lines, 0 warnings, 0 errors
Open Watcom Linker Version 1.7
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
Warning! W1107: undefined system name: dos
loading object files
creating map file
creating a DOS executable
---------------------------------------------------------------------
And notice how it whines about no "system name: dos" (defined in \BINW\WLSYSTEM.LNK, I think). Of course it isn't needed (no libs used), but it seems to think it is.
---------------------------------------------------------------------
system begin dos
libpath %WATCOM%/lib286
libpath %WATCOM%/lib286/dos
format dos ^
end
---------------------------------------------------------------------
And here's the .BAT I used to make it (I generally dislike makefiles):
---------------------------------------------------------------------
@echo off
if not exist himemx.asm goto end
for %%a in (lst map obj exe err) do if exist %%a del %%a
jwasmd himemx.asm -Fl=himemx.lst
wlink system dos file himemx.obj name himemx.exe op map=himemx.map
:end
---------------------------------------------------------------------
Of course, it's not a real .LST generated, so I had to (weakly) attempt to make my own (via HIEW):
---------------------------------------------------------------------
reset_ureal:
00000D76: BA1000 mov dx,00010 ;" "
set_ureal:
00000D79: 90 nop
00000D7A: 2E0F01161800 lgdt cs:[00018]
00000D80: 0F20C0 mov eax,cr0
00000D83: 40 inc ax
00000D84: 0F22C0 mov cr0,eax
00000D87: 48 dec ax
00000D88: 8EDA mov ds,dx
00000D8A: 8EC2 mov es,dx
00000D8C: 0F22C0 mov cr0,eax
00000D8F: C3 retn
---------------------------------------------------------------------
Hope some of that helps!
EDIT:
> the predecode queue, distinct from the prefetch queue, holds up to
> three complete instructions in the 386 !
Isn't the longest 32-bit instruction only 16 bytes (vs. 6 for 8086 or 10?? for 286)? And any CALL or JMP flushes the prefetch queue, right? The 386 is only partially pipelined (unlike the 486, which is fully). 386's fastest instruction takes two clocks under ideal circumstances. (That's all I know, maybe not relevant here, this is beyond me!)
---
Know your limits.h
Complete thread:
- comment on flushing predecode queue (pre-Pentium) - Ninho, 23.04.2008, 10:06 (DOSX)
- comment on flushing predecode queue (pre-Pentium) - Japheth, 23.04.2008, 19:54
- comment on flushing predecode queue (pre-Pentium) - Ninho, 23.04.2008, 20:22
- comment on flushing predecode queue (pre-Pentium) - Japheth, 23.04.2008, 21:04
- comment on flushing predecode queue (pre-Pentium) - Ninho, 23.04.2008, 23:32
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 24.04.2008, 19:18
- comment on flushing predecode queue (pre-Pentium) - RayeR, 24.04.2008, 22:34
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 08:11
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 08:58
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 09:23
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 09:31
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 09:52
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 10:00
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 10:09
- comment on flushing predecode queue (pre-Pentium) - Steve, 25.04.2008, 11:05
- comment on flushing predecode queue (pre-Pentium) - Steve, 25.04.2008, 11:04
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:11
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 11:18
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:21
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 11:24
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:41
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 13:57
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 14:34
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 13:57
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:41
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 11:24
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:21
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 11:34
- comment on flushing predecode queue (pre-Pentium) - Steve, 25.04.2008, 11:55
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 13:09
- comment on flushing predecode queue (pre-Pentium) - Steve, 25.04.2008, 14:18
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 13:09
- comment on flushing predecode queue (pre-Pentium) - Steve, 25.04.2008, 11:55
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 11:18
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 11:11
- comment on flushing predecode queue (pre-Pentium) - rr, 25.04.2008, 10:00
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 25.04.2008, 20:55
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 09:52
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 09:31
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 09:23
- comment on flushing predecode queue (pre-Pentium) - RayeR, 26.04.2008, 00:54
- comment on flushing predecode queue (pre-Pentium) - Japheth, 26.04.2008, 09:49
- comment on flushing predecode queue (pre-Pentium) - Ninho, 26.04.2008, 10:29
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 26.04.2008, 20:57
- comment on flushing predecode queue (pre-Pentium) - RayeR, 27.04.2008, 01:52
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 27.04.2008, 05:36
- comment on flushing predecode queue (pre-Pentium) - RayeR, 27.04.2008, 13:20
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 27.04.2008, 20:20
- comment on flushing predecode queue (pre-Pentium) - flox, 27.04.2008, 22:08
- comment on flushing predecode queue (pre-Pentium) - Steve, 28.04.2008, 02:44
- comment on flushing predecode queue (pre-Pentium) - flox, 27.04.2008, 22:08
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 27.04.2008, 20:20
- comment on flushing predecode queue (pre-Pentium) - marcov, 27.04.2008, 15:46
- comment on flushing predecode queue (pre-Pentium) - RayeR, 27.04.2008, 13:20
- comment on flushing predecode queue (pre-Pentium) - Ninho, 27.04.2008, 10:10
- comment on flushing predecode queue (pre-Pentium) - Japheth, 28.04.2008, 11:50
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 27.04.2008, 05:36
- comment on flushing predecode queue (pre-Pentium) - tom, 27.04.2008, 14:46
- HIMEMX bug - DOS386, 01.05.2008, 05:48
- HIMEMX bug - Japheth, 01.05.2008, 09:20
- comment on flushing predecode queue (pre-Pentium) - Ninho, 26.04.2008, 10:29
- comment on flushing predecode queue (pre-Pentium) - Japheth, 26.04.2008, 09:49
- comment on flushing predecode queue (pre-Pentium) - Japheth, 25.04.2008, 08:58
- comment on flushing predecode queue (pre-Pentium) - Ninho, 25.04.2008, 08:11
- comment on flushing predecode queue (pre-Pentium) - RayeR, 24.04.2008, 22:34
- comment on flushing predecode queue (pre-Pentium) - Rugxulo, 24.04.2008, 19:18
- comment on flushing predecode queue (pre-Pentium) - Ninho, 23.04.2008, 23:32
- comment on flushing predecode queue (pre-Pentium) - Japheth, 23.04.2008, 21:04
- comment on flushing predecode queue (pre-Pentium) - Ninho, 23.04.2008, 20:22
- comment on flushing predecode queue (pre-Pentium) - Japheth, 23.04.2008, 19:54