Problem with 128 bit registers (XMM)

Bare metal programming in PureBasic, for experienced users
dangerfreak
User
User
Posts: 32
Joined: Tue Jan 12, 2010 4:56 pm

Problem with 128 bit registers (XMM)

Post by dangerfreak »

I was just messing around with 128 bit registers and can't explain, why I got the following syntax error:

Code: Select all

EnableExplicit

Global *buffer
*buffer=AllocateMemory(10)

!MOVDQA xmm1,DQWORD [p_buffer] ; works!

EnableASM
MOVDQA xmm1,dqword [p_buffer] ; syntax error???
DisableASM

FreeMemory(*buffer)
Why does it work with "!", but not with "enableASM"?
User avatar
STARGÅTE
Addict
Addict
Posts: 2067
Joined: Thu Jan 10, 2008 1:30 pm
Location: Germany, Glienicke
Contact:

Re: Problem with 128 bit registers (XMM)

Post by STARGÅTE »

I think EnableASM do not check for all ASM instructions, just for the basic ones.
If you put a ! before the line, the whole line is forwarded to the assembler.
Without the !, the lines will also passed through the PB compiler.

As an additional note:
MOVDQA will not work on an allocated memory by PureBasic!
MOVDQA needs an 16-byte-aligned source/destination, which is not guaranteed by AllocateMemory()!
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Lizard - Script language for symbolic calculations and moreTypeface - Sprite-based font include/module
Fred
Administrator
Administrator
Posts: 16617
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: Problem with 128 bit registers (XMM)

Post by Fred »

May be we should remove the EnableASM block, as it's more confusing than useful. '!' is better IMHO to pass directly the whole line to the ASM
juergenkulow
Enthusiast
Enthusiast
Posts: 544
Joined: Wed Sep 25, 2019 10:18 am

Re: Problem with 128 bit registers (XMM)

Post by juergenkulow »

Which ASM commands are in pbcompiler.exe and which valid ASM commands are missing there and trigger false error messages?
Please ask your questions, because switch on the cognition apparatus decides on the only known life in the universe.Wersten :DDüsseldorf NRW Germany Europe Earth Solar System Flake Bubble Orionarm
Milky Way Local_Group Virgo Supercluster Laniakea Universe
Fred
Administrator
Administrator
Posts: 16617
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: Problem with 128 bit registers (XMM)

Post by Fred »

I didn't upated the asm since a while (means about 20 years) so it's expected it didn't work as expected. I can take a closer look to update it and may be put it on GitHub if some of you want to take a look.
User avatar
idle
Always Here
Always Here
Posts: 5042
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Problem with 128 bit registers (XMM)

Post by idle »

Fred wrote: Mon Jan 30, 2023 10:13 am I didn't upated the asm since a while (means about 20 years) so it's expected it didn't work as expected. I can take a closer look to update it and may be put it on GitHub if some of you want to take a look.
I added loads of asm keywords to the ide when he was open sourced and had asked you if you could add them to the compiler some time.
juergenkulow
Enthusiast
Enthusiast
Posts: 544
Joined: Wed Sep 25, 2019 10:18 am

Re: Problem with 128 bit registers (XMM)

Post by juergenkulow »

Code: Select all

x64op ADC ADD ADDPD ADDPS ADDSD ADDSS ADDSUBPD ADDSUBPS AND ANDNPD ANDNPS ANDPD ANDPS BLENDPD BLENDPS BSF BSR BSWAP BT BTC BTR BTS CALL CALLF CBW CWDE CDQE CLC CLD CLFLUSH CLI CLTS CMC CMOVB CMOVNAE CMOVC CMOVBE CMOVNA CMOVL CMOVNGE CMOVLE CMOVNG CMOVNB CMOVAE CMOVNC CMOVNBE CMOVA CMOVNL CMOVGE CMOVNLE CMOVG CMOVNO CMOVNP CMOVPO CMOVNS CMOVNZ CMOVNE CMOVO CMOVP CMOVPE CMOVS CMOVZ CMOVE CMP CMPPD CMPPS CMPS CMPSB CMPS CMPSW CMPSD CMPSQ CMPSD CMPSS CMPXCHG CMPXCHG8B CMPXCHG16B COMISD COMISS CPUID CRC32 CVTDQ2PD CVTDQ2PS CVTPD2DQ CVTPD2PI CVTPD2PS CVTPI2PD CVTPI2PS CVTPS2DQ CVTPS2PD CVTPS2PI CVTSD2SI CVTSD2SS CVTSI2SD CVTSI2SS CVTSS2SD CVTSS2SI CVTTPD2DQ CVTTPD2PI CVTTPS2DQ CVTTPS2PI CVTTSD2SI CVTTSS2SI CWD CDQ CQO DEC DIV DIVPD DIVPS DIVSD DIVSS DPPD DPPS EMMS ENTER EXTRACTPS F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCMOVB FCMOVBE FCMOVE FCMOVNB FCMOVNBE FCMOVNE FCMOVNU FCMOVU FCOM FCOM2 FCOMI FCOMIP FCOMP FCOMP3 FCOMP5 FCOMPP FCOS FDECSTP FDIV FDIVP FDIVR FDIVRP FFREE FFREEP FIADD FICOM FICOMP FIDIV FIDIVR FILD FIMUL FINCSTP FINIT FIST FISTP FISTTP FISUB FISUBR FLD FLD1 FLDCW FLDENV FLDL2E FLDL2T FLDLG2 FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI nop FNENI nop FNINIT FNOP FNSAVE FNSETPM nopFNSTCW FNSTENV FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FS FSAVE FSCALE FSIN FSINCOS FSQRT FST FSTCW FSTENV FSTP FSTP1 FSTP8 FSTP9 FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMI FUCOMIP FUCOMP FUCOMPP FWAIT WAIT FXAM FXCH FXCH4 FXCH7 FXRSTOR FXSAVE FXTRACT FYL2X FYL2XP1 GETSEC GS HADDPD HADDPS HINT_NOP HLT HSUBPD HSUBPS IDIV IMUL IN INC INS INSB INS INSW INS INSD INSERTPS INT INT1 ICEBP INTO INVD INVEPT INVLPG INVVPID IRET IRETD IRETQ JB JNAE JC JB JNAE JC JBE JNA JBE JNA JECXZ JRCXZ JL JNGE JL JNGE JLE JNG JLE JNG JMP JMPF JNB JAE JNC JNB JAE JNC JNBE JA JNBE JA JNL JGE JNL JGE JNLE JG JNLE JG JNO JNP JPO JNP JPO JNS JNZ JNE JNZ JNE JO JP JPE JP JPE JS JZ JE JZ JE LAHF LAR LDDQU LDMXCSR LEA LEAVE LFENCE LFS LGDT LGS LIDT LLDT LMSW LOCK LODS LODSB LODS LODSW LODSD LODSQ LOOP LOOPNZ LOOPNE LOOPZ LOOPE LSL LSS LTR MASKMOVDQU MASKMOVQ MAXPD MAXPS MAXSD MAXSS MFENCE MINPD MINPS MINSD MINSS MONITOR MOV MOVAPD MOVAPS MOVBE MOVD MOVQ MOVD MOVQ MOVD MOVQ MOVD MOVQ MOVDDUP MOVDQ2Q MOVDQA MOVDQU MOVHLPS MOVHPD MOVHPS MOVLHPS MOVLPD MOVLPS MOVMSKPD MOVMSKPS MOVNTDQ MOVNTI MOVNTPD MOVNTPS MOVNTQ MOVQ MOVQ2DQ MOVS MOVSB MOVS MOVSW MOVSD MOVSQ MOVSD MOVSHDUP MOVSLDUP MOVSS MOVSX MOVSXD MOVUPD MOVUPS MOVZX MPSADBW MUL MULPD MULPS MULSD MULSS MWAIT NEG NOP NOT OR ORPD ORPS OUT OUTS OUTSB OUTS OUTSW OUTS OUTSD PACKSSDW PACKSSWB PACKUSWB PADDB PADDD PADDQ PADDSB PADDSW PADDUSB PADDUSW PADDW PALIGNR PAND PANDN PAUSE PAVGB PAVGW PBLENDW PCMPEQB PCMPEQD PCMPEQW PCMPESTRI PCMPESTRM PCMPGTB PCMPGTD PCMPGTW PCMPISTRI PCMPISTRM PEXTRB PEXTRD PEXTRQ PEXTRW PINSRB PINSRD PINSRQ PINSRW PMADDWD PMAXSW PMAXUB PMINSW PMINUB PMOVMSKB PMULHUW PMULHW PMULLW PMULUDQ POP POPCNT POPF POPFQ POR PREFETCHNTAPREFETCHT0 PREFETCHT1 PREFETCHT2 PSADBW PSHUFD PSHUFHW PSHUFLW PSHUFW PSLLD PSLLDQ PSLLQ PSLLW PSRAD PSRAW PSRLD PSRLDQ PSRLQ PSRLW PSUBB PSUBD PSUBQ PSUBSB PSUBSW PSUBUSB PSUBUSW PSUBW PUNPCKHBW PUNPCKHDQ PUNPCKHQDQ PUNPCKHWD PUNPCKLBW PUNPCKLDQ PUNPCKLQDQ PUNPCKLWD PUSH PUSHF PUSHFQ PXOR RCL RCPPS RCPSS RCR RDMSR RDPMC RDTSC RDTSCP REP REPNZ REPNE REPZ REPE RETF RETN REX REX.B REX.R REX.RB REX.RX REX.RXB REX.W REX.WB REX.WR REX.WRB REX.WRX REX.WRXB REX.WX REX.WXB REX.X REX.XB ROL ROR ROUNDPD ROUNDPS ROUNDSD ROUNDSS RSM RSQRTPS RSQRTSS SAHF SAL SHL SAL SHL SAL SHL SAL SHL SAL SHL SAL SHL SAR SBB SCAS SCASB SCAS SCASW SCASD SCASQ SETB SETNAE SETC SETBE SETNA SETL SETNGE SETLE SETNG SETNB SETAE SETNC SETNBE SETA SETNL SETGE SETNLE SETG SETNO SETNP SETPO SETNS SETNZ SETNE SETO SETP SETPE SETS SETZ SETE SFENCE SGDT SHL SAL SHL SAL SHL SAL SHL SAL SHL SAL SHL SAL SHLD SHR SHRD SHUFPD SHUFPS SIDT SLDT SMSW SQRTPD SQRTPS SQRTSD SQRTSS STC STD STI STMXCSR STOS STOSB STOS STOSW STOSD STOSQ STR SUB SUBPD SUBPS SUBSD SUBSS SWAPGS SYSCALL SYSENTER SYSEXIT SYSRET TEST UCOMISD UCOMISS UD UD2 UNPCKHPD UNPCKHPS UNPCKLPD UNPCKLPS VERR VERW VMCALL VMCLEAR VMLAUNCH VMPTRLD VMPTRST VMREAD VMRESUME VMWRITE VMXOFF VMXON WBINVD WRMSR XADD XCHG XGETBV XLAT XLATB XOR XORPD XORPS XRSTOR XSAVE XSETBV 
Post Reply