Skip to content

Instantly share code, notes, and snippets.

@Kaizen86
Last active May 30, 2021 10:32
Show Gist options
  • Select an option

  • Save Kaizen86/dae2f22f6e2fe6ddca93d0424cb4256b to your computer and use it in GitHub Desktop.

Select an option

Save Kaizen86/dae2f22f6e2fe6ddca93d0424cb4256b to your computer and use it in GitHub Desktop.
Greatly improved asm.nanorc
# Intel Assembly
## Got fed up with the frankly inadequate default colours for assembly, so I made my own set.
## This process also taught me the basics of regular expressions, which was a nice bonus.
syntax asm "\.(S|s|asm)$"
magic "assembler source"
comment ";"
# Symbol visibility levels
color green "\.(align|file|globl|global|hidden|section|size|type|weak)"
# Call, Jump, and Branch destination labels
icolor yellow "\b(call|jb|jnae|jc|jbe|jna|jecxz|jrcxz|jl|jnge|jle|jng|jmp|jmpf|jnb|jae|jnc|jnbe|ja|jnl|jge|jnle|jg|jno|jnp|jpo|jns|jnz|jne|jo|jp|jpe|js|jz|je)\b.*"
# Instructions - Monster regex with all of the valid opcodes
icolor magenta "\b(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|cdq|cdqe|clc|cld|clflush|cli|clts|cmc|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|cmp|cmppd|cmpps|cmps|cmpsb|cmpsd|cmpsq|cmpss|cmpsw|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|cqo|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvtsi2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvttpd2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cwde|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 nop|fnstcw|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|fxam|fxch|fxch4|fxch7|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|getsec|gs|haddpd|haddps|hint_nop|hlt|hsubpd|hsubps|icebp|idiv|imul|in|inc|ins|insb|insd|insertps|insw|int|int1|into|invd|invept|invlpg|invvpid|iret|iretd|iretq|ja|ja|jae|jae|jb|jb|jbe|jbe|jc|jc|je|je|jecxz|jecxz|jg|jg|jge|jge|jl|jl|jle|jle|jmp|jmp|jmpf|jmpf|jna|jna|jnae|jnae|jnb|jnb|jnbe|jnbe|jnc|jnc|jne|jne|jng|jng|jnge|jnge|jnl|jnl|jnle|jnle|jno|jno|jnp|jnp|jns|jns|jnz|jnz|jo|jo|jp|jp|jpe|jpe|jpo|jpo|jrcxz|jrcxz|js|js|jz|jz|lahf|lar|lddqu|ldmxcsr|lea|leave|lfence|lfs|lgdt|lgs|lidt|lldt|lmsw|lock|lods|lodsb|lodsd|lodsq|lodsw|loop|loope|loopne|loopnz|loopz|lsl|lss|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movddup|movdq2q|movdqa|movdqu|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsd|movshdup|movsldup|movsq|movss|movsw|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|nop|not|or|orpd|orps|out|outs|outsb|outsd|outsw|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|prefetchnta|prefetcht0|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|repe|repne|repnz|repz|ret|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|sar|sbb|scas|scasb|scasd|scasq|scasw|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|sfence|sgdt|shl|shld|shr|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|sti|stmxcsr|stos|stosb|stosd|stosq|stosw|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|wait|wbinvd|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsetbv)\b"
# Registers
icolor cyan "\b[er]{0,1}[abcd][lhx]\b"
icolor cyan "\b[re]{0,1}[sdb]{0,1}[pl]{0,1}[ipl]\b"
icolor cyan "(r8|r9|r10|r11|r12|r13|r14|r15|rip|eflags|cs|ss|ds|es|fs|gs|st0|st1|st2|st3|st4|st5|st6|st7|fctrl|fstat|ftag|fiseg|fioff|foseg|fooff|fop|mxcsr|bndcfgu|bndstatus|ymm0|ymm1|ymm2|ymm3|ymm4|ymm5|ymm6|ymm7|ymm8|ymm9|ymm10|ymm11|ymm12|ymm13|ymm14|ymm15|bnd0|bnd1|bnd2|bnd3)"
# Labels
icolor brightred "^[[:space:]]*[.0-9a-z_]*:"
# Section indicators
icolor brightgreen "\.(data|subsection|text)"
# Datatypes
icolor brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)"
# Strings and literal values
color brightyellow "<[^= ]*>" ""(\\.|[^"])*""
icolor brightyellow "0x[0-9a-f]{1,}"
color brightyellow "[0-9]{1,}"
# Preprocessor directives
icolor brightcyan "^[[:space:]]*#[[:space:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)"
# Comments
color brightblue ";.*"
# Trailing whitespace.
color ,green "[[:space:]]+$"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment