Prev: announce: my very first disassembler now available (GPL)
Next: Win32 non blocking console input?
From: Rod Pemberton on 14 Aug 2008 20:18 Just an FYI, I was cleaning up the 16-bit .asm I created from NASM's 0.98.39 insns.dat to find errors with Willow's Crudasm. I ran the resulting NASM 0.98.39 .bin file through Ndisasm.exe from NASM 2.03.01 (both for DOS). This is a list of those instructions which didn't disassemble the same. If it appeared that 2.03.01 had a completely disassembled instruction, it follows after the semi-colon. I also noticed that 'lfs' and 'lgs' disassembled correctly, but not 'lds' and 'les'...(?) BITS 16 cmpxchg486 [0xBBEE],al cmpxchg486 al,bl cmpxchg486 [0xBBEE],ax cmpxchg486 ax,bx cmpxchg486 [0xBBEE],eax cmpxchg486 eax,ebx ibts [0xBBEE],ax ibts ax,bx ibts [0xBBEE],eax ibts eax,ebx lds ax,[0xBBEE] lds eax,[0xBBEE] les ax,[0xBBEE] les eax,[0xBBEE] mov eax,tr3 mov tr3,eax pmvgezb mm1,[0xBBEE] ;subps xmm1,[0xbbee] pmvlzb mm1,[0xBBEE] ;cvtdq2ps xmm1,[0xbbee] pmvnzb mm1,[0xBBEE] ;cvtps2pd xmm1,[0xbbee] pmvzb mm1,[0xBBEE] ;addps xmm1,[0xbbee] pop cs ;nop word [bx] psubsiw mm1,[0xBBEE] ;andnps xmm1,[0xbbee] psubsiw mm0,mm1 ;andnps xmm0,xmm1 smi smint smintold xbts ax,[0xBBEE] xbts ax,bx xbts eax,[0xBBEE] xbts eax,ebx pshuflw xmm0,xmm1,byte 0x33 ;db 0xF2 pshufw mm0,mm1,0x33 pshuflw xmm1,[0xBBEE],byte 0x33 ;db 0xF2 pshufw mm1,[0xbbee],0x33 rsdc es,tword [0xBBEE] ;vmwrite eax,dword [0xbbee] svdc tword [0xBBEE],es ;vmread dword [0xbbee],eax svldt tword [0xBBEE] movdq2q mm1,xmm1 HTH, Rod Pemberton
From: Rod Pemberton on 14 Aug 2008 20:53 "Rod Pemberton" <do_not_have(a)nohavenot.cmm> wrote in message news:g82i1m$822$1(a)aioe.org... > > Just an FYI, > > I was cleaning up the 16-bit .asm I created from NASM's 0.98.39 insns.dat to > find errors with Willow's Crudasm. I ran the resulting NASM 0.98.39 .bin > file through Ndisasm.exe from NASM 2.03.01 (both for DOS). This is a list > of those instructions which didn't disassemble the same. If it appeared > that 2.03.01 had a completely disassembled instruction, it follows after the > semi-colon. I also noticed that 'lfs' and 'lgs' disassembled correctly, but > not 'lds' and 'les'...(?) > > > BITS 16 > > cmpxchg486 [0xBBEE],al > cmpxchg486 al,bl > cmpxchg486 [0xBBEE],ax > cmpxchg486 ax,bx > cmpxchg486 [0xBBEE],eax > cmpxchg486 eax,ebx > ibts [0xBBEE],ax > ibts ax,bx > ibts [0xBBEE],eax > ibts eax,ebx > lds ax,[0xBBEE] > lds eax,[0xBBEE] > les ax,[0xBBEE] > les eax,[0xBBEE] > mov eax,tr3 > mov tr3,eax > pmvgezb mm1,[0xBBEE] ;subps xmm1,[0xbbee] > pmvlzb mm1,[0xBBEE] ;cvtdq2ps xmm1,[0xbbee] > pmvnzb mm1,[0xBBEE] ;cvtps2pd xmm1,[0xbbee] > pmvzb mm1,[0xBBEE] ;addps xmm1,[0xbbee] > pop cs ;nop word [bx] > psubsiw mm1,[0xBBEE] ;andnps xmm1,[0xbbee] > psubsiw mm0,mm1 ;andnps xmm0,xmm1 > smi > smint > smintold > xbts ax,[0xBBEE] > xbts ax,bx > xbts eax,[0xBBEE] > xbts eax,ebx > pshuflw xmm0,xmm1,byte 0x33 ;db 0xF2 pshufw mm0,mm1,0x33 > pshuflw xmm1,[0xBBEE],byte 0x33 ;db 0xF2 pshufw mm1,[0xbbee],0x33 > rsdc es,tword [0xBBEE] ;vmwrite eax,dword [0xbbee] > svdc tword [0xBBEE],es ;vmread dword [0xbbee],eax > svldt tword [0xBBEE] > movdq2q mm1,xmm1 > > And, some more differences... E.g., sal as shl and register/memory reversals on test and xchg. icebp ;int1 paddsiw mm1,[0xBBEE] ;sqrtps xmm1,[0xbbee] paddsiw mm0,mm1 ;sqrtps xmm0,xmm1 paveb mm0,mm1 ;movmskps eax,xmm1 pdistib mm1,[0xBBEE] ;andps xmm1,[0xbbee] pmachriw mm1,[0xBBEE] ;divps xmm1,[0xbbee] pmagw mm1,[0xBBEE] ;rsqrtps xmm1,[0xbbee] pmagw mm0,mm1 ;rsqrtps xmm0,xmm1 pmulhriw mm1,[0xBBEE] ;minps xmm1,[0xbbee] pmulhriw mm0,mm1 ;minps xmm0,xmm1 pmulhrwc mm1,[0xBBEE] ;mulps xmm1,[0xbbee] pmulhrwc mm0,mm1 ;mulps xmm0,xmm1 syscall ;loadall286 sysret ;loadall test al,[0xBBEE] ;test [0xbbee],al test ax,[0xBBEE] ;test [0xbbee],ax test eax,[0xBBEE] ;test [0xbbee],eax umov [0xBBEE],al ;movups xmm0,[0xbbee] umov al,bl ;movups xmm3,xmm0 umov [0xBBEE],ax ;movups [0xbbee],xmm0 umov ax,bx ;movups xmm0,xmm3 umov [0xBBEE],eax ;movupd [0xbbee],xmm0 umov eax,ebx ;movupd xmm3,xmm0 umov al,[0xBBEE] ;movlps xmm0,[0xbbee] umov al,bl ;movups xmm3,xmm0 umov ax,[0xBBEE] ;movlps [0xbbee],xmm0 umov ax,bx ;movups xmm0,xmm3 umov eax,[0xBBEE] ;movlpd [0xbbee],xmm0 umov eax,ebx ;movupd xmm3,xmm0 xchg [0xBBEE],al ;xchg al,[0xbbee] xchg [0xBBEE],ax ;xchg ax,[0xbbee] xchg [0xBBEE],eax ;xchg eax,[0xbbee] movd xmm1,eax ;movd mm1,eax movd xmm1,[0xBBEE] ;movd mm1,[0xbbee] HTH, Rod Pemberton
From: Wolfgang Kern on 15 Aug 2008 03:07 Rod Pemberton posted (in part): .... >> ibts [0xBBEE],ax >> xbts ax,[0xBBEE] >> smint >> smintold >> rsdc es,tword [0xBBEE] ;vmwrite eax,dword [0xbbee] >> svdc tword [0xBBEE],es ;vmread dword [0xbbee],eax >> svldt tword [0xBBEE] I haven't any of these in my list, which instructions/opcodes are meant with the above ? __ wolfgang
From: Rod Pemberton on 15 Aug 2008 11:17 "Wolfgang Kern" <nowhere(a)never.at> wrote in message news:g83bsa$opk$2(a)newsreader2.utanet.at... > > Rod Pemberton posted (in part): > > ... > >> ibts [0xBBEE],ax > >> xbts ax,[0xBBEE] > >> smint > >> smintold > >> rsdc es,tword [0xBBEE] ;vmwrite eax,dword [0xbbee] > >> svdc tword [0xBBEE],es ;vmread dword [0xbbee],eax > >> svldt tword [0xBBEE] > > I haven't any of these in my list, > which instructions/opcodes are meant with the above ? > These are in described in the NASM 0.98.39 nasmdoc.txt. The complete descriptions are too much to post (and probably copyrighted), so these are first couple of lines from it for each instruction. (You'll notice that IBTS and XBTS have the same opcode as CMPXCHG486.) B.4.116 `IBTS': Insert Bit String IBTS r/m16,reg16 ; o16 0F A7 /r [386,UNDOC] IBTS r/m32,reg32 ; o32 0F A7 /r [386,UNDOC] B.4.332 `XBTS': Extract Bit String XBTS reg16,r/m16 ; o16 0F A6 /r [386,UNDOC] XBTS reg32,r/m32 ; o32 0F A6 /r [386,UNDOC] B.4.295 `SMINT', `SMINTOLD': Software SMM Entry (CYRIX) SMINT ; 0F 38 [PENT,CYRIX] SMINTOLD ; 0F 7E [486,CYRIX] B.4.276 `RSDC': Restore Segment Register and Descriptor RSDC segreg,m80 ; 0F 79 /r [486,CYRIX,SMM] B.4.310 `SVDC': Save Segment Register and Descriptor SVDC m80,segreg ; 0F 78 /r [486,CYRIX,SMM] B.4.311 `SVLDT': Save LDTR and Descriptor SVLDT m80 ; 0F 7A /0 [486,CYRIX,SMM] Rod Pemberton
From: Frank Kotler on 15 Aug 2008 12:27
Rod Pemberton wrote: .... > I also noticed that 'lfs' and 'lgs' disassembled correctly, but > not 'lds' and 'les'...(?) This is one that's been discovered and fixed. Get the very latest, hot off the presses, version here: ftp://ftp.zytor.com/pub/nasm/snapshots/ Or watch it as it happens: http://repo.or.cz/w/nasm.git Sorry 'bout the "instability"... They complained when it was "dead", too... :) Best, Frank |