News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests

Main Menu

pExt Symbol

Started by Biterider, December 31, 2020, 07:03:55 PM

Previous topic - Next topic

Biterider

Hi
I encountered a strange behavior while compiling code that contains a local symbol called pExt.
UASM 2.49.0.2 throws a syntax error, but as soon as I change the name to something else, the error is gone.
Is there anything special about this symbol?

Attached the very reduced test case.

Biterider




jj2007

It's case-insensitivity: pext and PEXE also misbehave. So it's probably an internal or undocumented keyword.

nidud

https://www.felixcloutier.com/x86/pext

Vortex

ml.exe V6.14 from the Masm32 package can assemble Biterider's source file. Disassembling the object module :

_text   SEGMENT PARA PUBLIC 'CODE'

_start@0 PROC NEAR
        push    ebp
        mov     ebp, esp
        add     esp, -4
        leave
        ret
_start@0 ENDP

_text   ENDS

jj2007

Quote from: nidud on December 31, 2020, 11:14:32 PM
https://www.felixcloutier.com/x86/pext

Nice find :thumbsup:

Not to be confounded with PEXTRW:
include \masm32\MasmBasic\MasmBasic.inc
src OWORD 1234567890abcdef1234567890abcdefh
  Init
  movups xmm0, src
  pextrw eax, xmm0, 0
  pextrw ebx, xmm0, 1
  pextrw ecx, xmm0, 2
  pextrw edx, xmm0, 15
  deb 4, "using pextrw", x:xmm0, x:eax, x:ebx, x:ecx, x:edx
  xor ecx, ecx
  pext eax, ebx, ecx ; illegal instruction
EndOfCode

using pextrw
x:xmm0          12345678 90ABCDEF 12345678 90ABCDEF
x:eax           0000CDEF
x:ebx           000090AB
x:ecx           00005678
x:edx           00001234


Quote from: Vortex on December 31, 2020, 11:57:55 PM
ml.exe V6.14 from the Masm32 package can assemble Biterider's source file

Yes, because it's so old that ML 6.14 does not know about the instruction... ML 10.0 says syntax error, same for 14.x :sad:

Olly doesn't know about PEXT, while the old October 2017 version of X32Dbg deciphers pext eax, ebx, ecx correctly; but it's still an illegal instruction on my trusty old Core i5 :sad:

Biterider

Thanks nidud for the clarification  :thumbsup:

Biterider