Skip to content

Commit

Permalink
Updates to ARM assembly highlighting (#5489)
Browse files Browse the repository at this point in the history
Updated highlighting to match many more instructions and conditions
Updated kitchen-sink to have a large list of instructions containing at least one of every condition as well as every instruction
  • Loading branch information
myriath authored Feb 29, 2024
1 parent 6862dbe commit 54cbc5e
Show file tree
Hide file tree
Showing 2 changed files with 151 additions and 3 deletions.
146 changes: 146 additions & 0 deletions demo/kitchen-sink/docs/assembly_arm32.s
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,149 @@ _asmtest: // Start of the function
msg:
.ascii "Hello, ARM32!\n"
len = . - msg

// All of these should match as instructions

addhs
adceqs
qaddne
qdaddcs
subcc
sbclo
rsbmi
rscpl
qsubvs
qdsubvc
mulhi
mlals
umullge
umlallt
umaalgt
smullle
smlalal
smulbb
smulwb
smlabt
smlawt
smlaltb
smuad
smladx
smlald
smusdx
smlsd
smlsldx
smmul
smmlar
smmls
mia
miaph
miatt
clz
sadd16
qsub16
shadd8
usub8
uqaddsubx
uhsubaddx
usad8
usada8
mov
movt
movw
mvn
mrs
msr
mra
mar
cpy
tst
teq
and
eor
orr
bic
cmp
cmn
ssat
ssat16
usat
usat16
pkhbt
pkhtb
sxth
sxtb16
sxtb
uxth
uxtb16
uxtb
sxtah
sxtab16
sxtab
uxtah
uxtab16
uxtab
rev
rev16
revsh
sel
b
bl
bx
blx
blx
bxj
cpsid
cpsie
cps
setend
srsia
rfeib
srsda
rfedb
srsfd
rfeed
srsfa
rfeea
bkpt
swi
svc
nop
ldr
ldrt
ldrb
ldrbt
ldrsb
ldrh
ldrsh
ldrd
ldmia
ldmfa
pld
ldrex
str
strt
strb
strbt
strh
strd
stmia
stmfd
strex
swp
swpb
cdp
cdp2
mrc
mrc2
mrrc
mrrc2
mcr
mcr2
mcrr
mcrr2
ldc
ldc2
stc
stc2

// End instruction matching test
8 changes: 5 additions & 3 deletions src/mode/assembly_arm32_highlight_rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ var AssemblyARM32HighlightRules = function() {
start: [
{
token: 'keyword.control.assembly',
regex: '\\b(?:svc|adc|add|and|b|bic|bl|bx|cdp|cmn|cmp|eor|ldc|ldm|ldr|mcr|mla|mov|mrc|mrs|msr|mul|mvn|orr|rsb|rsc|sbc|stc|stm|str|sub|swi|swp|teq|tst)\\b',
// should cover every instruction listed in https://pages.cs.wisc.edu/~markhill/restricted/arm_isa_quick_reference.pdf
regex: '\\b(?:cpsid|cpsie|cps|setend|(?:srs|rfe)(?:ia|ib|da|db|fd|ed|fa|ea)|bkpt|nop|pld|cdp2|mrc2|mrrc2|mcr2|mcrr2|ldc2|stc2|(?:add|adc|sub|sbc|rsb|rsc|mul|mla|umull|umlal|smull|smlal|mvn|and|eor|orr|bic)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?s?|(?:(?:q|qd)?(?:add|sub)|umaal|smul(?:b|t)(?:b|t)|smulw(?:b|t)|smla(?:b|t)(?:b|t)|smlaw(?:b|t)|smlal(?:b|t)(?:b|t)|smuadx?|smladx?|smlaldx?|smusdx?|smlsdx?|smlsldx?|smmulr?|smmlar?|smmlsr?|mia|miaph|mia(?:b|t)(?:b|t)|clz|(?:s|q|sh|u|uq|uh)(?:add16|sub16|add8|sub8|addsubx|subaddx)|usad8|usada8|mrs|msr|mra|mar|cpy|tst|teq|cmp|cmn|ssat|ssat16|usat|usat16|pkhbt|pkhtb|sxth|sxtb16|sxtb|uxth|uxtb16|uxtb|sxtah|sxtab16|sxtab|uxtah|uxtab16|uxtab|rev|rev16|revsh|sel|b|bl|bx|blx|bxj|swi|svc|ldrex|strex|cdp|mrc|mrrc|mcr|mcrr|ldc|stc)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?|ldr(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|sb|h|sh|d)?|str(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:t|b|bt|h|d)?|(?:ldm|stm)(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?(?:ia|ib|da|db|fd|ed|fa|ea)|swp(?:eq|ne|cs|hs|cc|lo|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al)?b?|mov(?:t|w)?)\\b',
caseInsensitive: true
},
{
token: 'variable.parameter.register.assembly',
regex: '\\b(?:r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|fp|ip|sp|lr|pc|cpsr|spsr)\\b',
token: 'variable.parameter.register.assembly',
// first half are actual registers until spsr, where it changes to fields and flexible operands
regex: '\\b(?:r0|r1|r2|r3|r4|r5|r6|r7|r8|r9|r10|r11|r12|r13|r14|r15|fp|ip|sp|lr|pc|cpsr|spsr|c|f|s|x|lsl|lsr|asr|ror|rrx)\\b',
caseInsensitive: true
},
{
Expand Down

0 comments on commit 54cbc5e

Please sign in to comment.