Skip to content

Commit

Permalink
i386 & x86_64 assembly support with AVX
Browse files Browse the repository at this point in the history
  • Loading branch information
nanoant committed Jun 20, 2012
1 parent 3ce2263 commit 2dc4b5b
Show file tree
Hide file tree
Showing 2 changed files with 188 additions and 0 deletions.
172 changes: 172 additions & 0 deletions Syntaxes/Assembly (x86).tmLanguage
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>fileTypes</key>
<array>
<string>src</string>
</array>
<key>name</key>
<string>Assembly (x86)</string>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?i)(?x)(\s*)%?\b(?:
# main registers
AX|AH|AL|EAX|RAX|BX|BH|BL|EBX|RBX|CX|CH|CL|ECX|RCX|DX|DH|DL|EDX|RDX|SI|ESI|RSI|DI|EDI|RDI|SP|ESP|RSP|BP|EBP|RBP|IP|EIP|RIP|
# segment pointers
CS|DS|SS|ES|FS|GS|
# MMX
MM[0-7]+|
# SSE/AVX
[XY]MM[0-9]+
)\b</string>
<key>name</key>
<string>variable.registers.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>(?i)(?x)(\s*)\b(?:
# http:#en.wikipedia.org/wiki/X86_instruction_listings
# 8086/8088
(?:AAA|AAD|AAM|AAS|ADC|ADD|AND|CALL|CBW|CLC|CLD|CLI|CMC|CMP|CMPSB|CMPSW|CWD|DAA|DAS|DEC|DIV|ESC|HLT|IDIV|IMUL|IN|INC|INT|INTO|IRET|JA|JAE|JB|JBE|JC|JCXZ|JE|JG|JGE|JL|JLE|JNA|JNAE|JNB|JNBE|JNC|JNE|JNG|JNGE|JNL|JNLE|JNO|JNP|JNS|JNZ|JO|JP|JPE|JPO|JS|JZ|JMP|LAHF|LDS|LEA|LES|LOCK|LODSB|LODSW|LOOP,LOOPE|LOOPNE|LOOPNZ|LOOPZ|MOV|MOVSB|MOVSW|MUL|NEG|NOP|NOT|OR|OUT|POP|POPF|PUSH|PUSHF|RCL|RCR|REP|REPE|REPNE|REPNZ|REPZ|RET|RETN|RETF|ROL|ROR|SAHF|SAL|SAR|SBB|SCASB|SCASW|SHL|SHR|STC|STD|STI|STOSB|STOSW|SUB|TEST|WAIT|XCHG|XLAT|XOR)[LQ]?|
# 80186/80188
BOUND|ENTER|INS|LEAVE|OUTS|POPA|PUSHA|
# 80286
ARPL|CLTS|LAR|LGDT|LIDT|LLDT|LMSW|LOADALL|LSL|LTR|SGDT|SIDT|SLDT|SMSW|STR|VERR|VERW|
# 80386
BSF|BSR|BT|BTC|BTR|BTS|CDQ|CMPSD|CWDE|INSB|INSW|INSD|IRET|IRETD|IRETF|JCXZ|JECXZ|LFS|LGS|LSS|LODSD|LOOPW|LOOPD|LOOPEW|LOOPED|LOOPZW|LOOPZD|LOOPNEW|LOOPNED|LOOPNZW|LOOPNZD|MOVSW|MOVSD|MOVSX|MOVZX|POPAD|POPFD|PUSHAD|PUSHFD|SCASD|SETA|SETAE|SETB|SETBE|SETC|SETE|SETG|SETGE|SETL|SETLE|SETNA|SETNAE|SETNB|SETNBE|SETNC|SETNE|SETNG|SETNGE|SETNL|SETNLE|SETNO|SETNP|SETNS|SETNZ|SETO|SETP|SETPE|SETPO|SETS|SETZ|SHLD|SHRD|STOSB|STOSW|STOSD|
# 80486
BSWAP|CMPXCHG|INVD|INVLPG|WBINVD|XADD|
# Pentium
CPUID|CMPXCHG8B|RDMSR|RDTSC|WRMSR|RSM|
# Pentium MMX
RDPMC|
# AMD K6-2
SYSCALL|SYSRET|
# Pentium Pro
CMOVA|CMOVAE|CMOVB|CMOVBE|CMOVC|CMOVE|CMOVG|CMOVGE|CMOVL|CMOVLE|CMOVNA|CMOVNAE|CMOVNB|CMOVNBE|CMOVNC|CMOVNE|CMOVNG|CMOVNGE|CMOVNL|CMOVNLE|CMOVNO|CMOVNP|CMOVNS|CMOVNZ|CMOVO|CMOVP|CMOVPE|CMOVPO|CMOVS|CMOVZ|SYSENTER|SYSEXIT|UD2|
# SSE
MASKMOVQ|MOVNTPS|MOVNTQ|PREFETCH0|PREFETCH1|PREFETCH2|PREFETCHNTA|SFENCE|
# SSE2
CLFLUSH|LFENCE|MASKMOVDQU|MFENCE|MOVNTDQ|MOVNTI|MOVNTPD|PAUSE|
# x86-64
CMPXCHG16B|RDTSCP|
# SSE3
LDDQU|MONITOR|MWAIT|
# AMD-V
CLGI|SKINIT|STGI|VMLOAD|VMMCALL|VMRUN|VMSAVE|
# Intel VT-x
VMPTRLD|VMPTRST|VMCLEAR|VMREAD|VMWRITE|VMCALL|VMLAUNCH|VMRESUME|VMXOFF|VMXON|
# SSE4a
LZCNT|POPCNT|
# Undocumented
AAM|AAD|SALC|UD1|ICEBP|LOADALL|LOADALLD
)\b</string>
<key>name</key>
<string>keyword.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>(?i)(?x)(\s*)\b(?:
# FPU:
# 8087
F2XM1|FABS|FADD|FADDP|FBLD|FBSTP|FCHS|FCLEX|FCOM|FCOMP|FCOMPP|FDECSTP|FDISI|FDIV|FDIVP|FDIVR|FDIVRP|FENI|FFREE|FIADD|FICOM|FICOMP|FIDIV|FIDIVR|FILD|FIMUL|FINCSTP|FINIT|FIST|FISTP|FISUB|FISUBR|FLD|FLD1|FLDCW|FLDENV|FLDENVW|FLDL2E|FLDL2T|FLDLG2|FLDLN2|FLDPI|FLDZ|FMUL|FMULP|FNCLEX|FNDISI|FNENI|FNINIT|FNOP|FNSAVE|FNSAVEW|FNSTCW|FNSTENV|FNSTENVW|FNSTSW|FPATAN|FPREM|FPTAN|FRNDINT|FRSTOR|FRSTORW|FSAVE|FSAVEW|FSCALE|FSQRT|FST|FSTCW|FSTENV|FSTENVW|FSTP|FSTSW|FSUB|FSUBP|FSUBR|FSUBRP|FTST|FWAIT|FXAM|FXCH|FXTRACT|FYL2X|FYL2XP1|
# 80287
FSETPM|
# 80387
FCOS|FLDENVD|FNSAVED|FNSTENVD|FPREM1|FRSTORD|FSAVED|FSIN|FSINCOS|FSTENVD|FUCOM|FUCOMP|FUCOMPP|
# Pentium Pro
FCMOVB|FCMOVBE|FCMOVE|FCMOVNB|FCMOVNBE|FCMOVNE|FCMOVNU|FCMOVU|FCOMI|FCOMIP|FUCOMI|FUCOMIP|
# SSE
FXRSTOR|FXSAVE|
# SSE3
FISTTP|
# SIMD:
# MMX
# Pentium MMX
EMMS|MOVD|MOVQ|PACKSSDW|PACKSSWB|PACKUSWB|PADDB|PADDD|PADDSB|PADDSW|PADDUSB|PADDUSW|PADDW|PAND|PANDN|PCMPEQB|PCMPEQD|PCMPEQW|PCMPGTB|PCMPGTD|PCMPGTW|PMADDWD|PMULHW|PMULLW|POR|PSLLD|PSLLQ|PSLLW|PSRAD|PSRAW|PSRLD|PSRLQ|PSRLW|PSUBB|PSUBD|PSUBSB|PSUBSW|PSUBUSB|PSUBUSW|PSUBW|PUNPCKHBW|PUNPCKHDQ|PUNPCKHWD|PUNPCKLBW|PUNPCKLDQ|PUNPCKLWD|PXOR|
# MMX+
# Athlon
# Same as the SSE SIMD integer instructions which operated on MMX registers.
# EMMX
# Cyrix 6x86MX (deprecated)
PAVEB|PADDSIW|PMAGW|PDISTIB|PSUBSIW|PMVZB|PMULHRW|PMVNZB|PMVLZB|PMVGEZB|PMULHRIW|PMACHRIW|
# 3DNow!
# K6-2
FEMMS|PAVGUSB|PF2ID|PFACC|PFADD|PFCMPEQ|PFCMPGE|PFCMPGT|PFMAX|PFMIN|PFMUL|PFRCP|PFRCPIT1|PFRCPIT2|PFRSQIT1|PFRSQRT|PFSUB|PFSUBR|PI2FD|PMULHRW|PREFETCH|PREFETCHW|
# 3DNow!+
# Athlon
PF2IW|PFNACC|PFPNACC|PI2FW|PSWAPD|
# Geode GX
PFRSQRTV|PFRCPV|
# SSE
# Pentium III
# fp
ADDPS|ADDSS|CMPPS|CMPSS|COMISS|CVTPI2PS|CVTPS2PI|CVTSI2SS|CVTSS2SI|CVTTPS2PI|CVTTSS2SI|DIVPS|DIVSS|LDMXCSR|MAXPS|MAXSS|MINPS|MINSS|MOVAPS|MOVHLPS|MOVHPS|MOVLHPS|MOVLPS|MOVMSKPS|MOVNTPS|MOVSS|MOVUPS|MULPS|MULSS|RCPPS|RCPSS|RSQRTPS|RSQRTSS|SHUFPS|SQRTPS|SQRTSS|STMXCSR|SUBPS|SUBSS|UCOMISS|UNPCKHPS|UNPCKLPS|
# integer
ANDNPS|ANDPS|ORPS|PAVGB|PAVGW|PEXTRW|PINSRW|PMAXSW|PMAXUB|PMINSW|PMINUB|PMOVMSKB|PMULHUW|PSADBW|PSHUFW|XORPS|
# SSE2
# Pentium 4
# fp
ADDPD|ADDSD|ANDNPD|ANDPD|CMPPD|CMPSD*|COMISD|CVTDQ2PD|CVTDQ2PS|CVTPD2DQ|CVTPD2PI|CVTPD2PS|CVTPI2PD|CVTPS2DQ|CVTPS2PD|CVTSD2SI|CVTSD2SS|CVTSI2SD|CVTSS2SD|CVTTPD2DQ|CVTTPD2PI|CVTTPS2DQ|CVTTSD2SI|DIVPD|DIVSD|MAXPD|MAXSD|MINPD|MINSD|MOVAPD|MOVHPD|MOVLPD|MOVMSKPD|MOVSD*|MOVUPD|MULPD|MULSD|ORPD|SHUFPD|SQRTPD|SQRTSD|SUBPD|SUBSD|UCOMISD|UNPCKHPD|UNPCKLPD|XORPD|
# integer
MOVDQ2Q|MOVDQA|MOVDQU|MOVQ2DQ|PADDQ|PSUBQ|PMULUDQ|PSHUFHW|PSHUFLW|PSHUFD|PSLLDQ|PSRLDQ|PUNPCKHQDQ|PUNPCKLQDQ|
# SSE3
# Pentium 4 SSE3
ADDSUBPD|ADDSUBPS|HADDPD|HADDPS|HSUBPD|HSUBPS|MOVDDUP|MOVSHDUP|MOVSLDUP|
# SSSE3
PSIGNW|PSIGND|PSIGNB|PSHUFB|PMULHRSW|PMADDUBSW|PHSUBW|PHSUBSW|PHSUBD|PHADDW|PHADDSW|PHADDD|PALIGNR|PABSW|PABSD|PABSB|
# SSE4
# SSE4.1
# Core2
MPSADBW|PHMINPOSUW|PMULLD|PMULDQ|DPPS|DPPD|BLENDPS|BLENDPD|BLENDVPS|BLENDVPD|PBLENDVB|PBLENDW|PMINSB|PMAXSB|PMINUW|PMAXUW|PMINUD|PMAXUD|PMINSD|PMAXSD|ROUNDPS|ROUNDSS|ROUNDPD|ROUNDSD|INSERTPS|PINSRB|PINSRD|PINSRQ|EXTRACTPS|PEXTRB|PEXTRW|PEXTRD|PEXTRQ|PMOVSXBW|PMOVZXBW|PMOVSXBD|PMOVZXBD|PMOVSXBQ|PMOVZXBQ|PMOVSXWD|PMOVZXWD|PMOVSXWQ|PMOVZXWQ|PMOVSXDQ|PMOVZXDQ|PTEST|PCMPEQQ|PACKUSDW|MOVNTDQA|
# SSE4a
# Phenom
LZCNT|POPCNT|EXTRQ|INSERTQ|MOVNTSD|MOVNTSS|
# SSE4.2
# Nehalem
CRC32|PCMPESTRI|PCMPESTRM|PCMPISTRI|PCMPISTRM|PCMPGTQ|
# AVX FMA
# Sandy Bridge
VFMADDPD|VFMADDPS|VFMADDSD|VFMADDSS|VFMADDSUBPD|VFMADDSUBPS|VFMSUBADDPD|VFMSUBADDPS|VFMSUBPD|VFMSUBPS|VFMSUBSD|VFMSUBSS|VFNMADDPD|VFNMADDPS|VFNMADDSD|VFNMADDSS|VFNMSUBPD|VFNMSUBPS|VFNMSUBSD|VFNMSUBSS|
# AEX
AESENC|AESENCLAST|AESDEC|AESDECLAST|AESKEYGENASSIST|AESIMC|
# Undocumented
FFREEP
)\b</string>
<key>name</key>
<string>support.function.fpu.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>^[_a-zA-Z][a-zA-Z0-9-_.]*(?=:)</string>
<key>name</key>
<string>entity.name.function.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>^[0-9A-Fa-f]{4,}</string>
<key>name</key>
<string>meta.preprocessor.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>(?:--|\/\/|\#|;).*$</string>
<key>name</key>
<string>comment.x86.assembly</string>
</dict>
<dict>
<key>match</key>
<string>\b(?:[0-9]+|0x[0-9a-fA-F]+)\b</string>
<key>name</key>
<string>constant.numeric.x86.assembly</string>
</dict>
</array>
<key>scopeName</key>
<string>source.untitled</string>
<key>uuid</key>
<string>D27507F8-E0DE-431F-86B2-55AB33B14BCA</string>
</dict>
</plist>
16 changes: 16 additions & 0 deletions info.plist
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>contactEmailRot13</key>
<string>bab@wnin.cy</string>
<key>contactName</key>
<string>Adam Strzelecki</string>
<key>description</key>
<string>Assembly bundle for TextMate</string>
<key>name</key>
<string>Assembly</string>
<key>uuid</key>
<string>362A43F3-2EB4-44DB-B30E-AA99AF48056A</string>
</dict>
</plist>

0 comments on commit 2dc4b5b

Please sign in to comment.