Skip to content

Commit 7ff4066

Browse files
committed
Add Java opcode syntax highlighting
1 parent 3637d31 commit 7ff4066

File tree

3 files changed

+469
-0
lines changed

3 files changed

+469
-0
lines changed

src/CodeSnip/CodeSnip.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
<Resource Include="Resources\Highlighting\Dark\il.xshd" />
4242
<Resource Include="Resources\Highlighting\Dark\ini.xshd" />
4343
<Resource Include="Resources\Highlighting\Dark\java.xshd" />
44+
<Resource Include="Resources\Highlighting\Dark\javaopc.xshd" />
4445
<Resource Include="Resources\Highlighting\Dark\js.xshd" />
4546
<Resource Include="Resources\Highlighting\Dark\json.xshd" />
4647
<Resource Include="Resources\Highlighting\Dark\md.xshd" />
@@ -72,6 +73,7 @@
7273
<Resource Include="Resources\Highlighting\Light\il.xshd" />
7374
<Resource Include="Resources\Highlighting\Light\ini.xshd" />
7475
<Resource Include="Resources\Highlighting\Light\java.xshd" />
76+
<Resource Include="Resources\Highlighting\Light\javaopc.xshd" />
7577
<Resource Include="Resources\Highlighting\Light\js.xshd" />
7678
<Resource Include="Resources\Highlighting\Light\json.xshd" />
7779
<Resource Include="Resources\Highlighting\Light\md.xshd" />
@@ -110,4 +112,5 @@
110112
</Content>
111113
</ItemGroup>
112114

115+
113116
</Project>
Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<SyntaxDefinition name="JavaOpcodes" extensions=".javaopc" xmlns="http://icsharpcode.net/sharpdevelop/syntaxdefinition/2008">
3+
<Color name="Keyword" foreground="#F92672" />
4+
<Color name="Instruction" foreground="#66D9EF" />
5+
<Color name="Number" foreground="#AE81FF" />
6+
<Color name="Comment" foreground="#75715E" />
7+
<Color name="Label" foreground="#FD971F" />
8+
<!-- <Color name="DisassemblyKeyword" foreground="#A6E22E" /> -->
9+
10+
<Property name="Extension" value="javaopc" />
11+
12+
<RuleSet>
13+
<Keywords color="Keyword">
14+
<Word>public</Word>
15+
<Word>private</Word>
16+
<Word>protected</Word>
17+
<Word>static</Word>
18+
<Word>final</Word>
19+
<Word>class</Word>
20+
<Word>interface</Word>
21+
<Word>abstract</Word>
22+
<Word>void</Word>
23+
<Word>int</Word>
24+
<Word>double</Word>
25+
<Word>float</Word>
26+
<Word>boolean</Word>
27+
<Word>char</Word>
28+
<Word>long</Word>
29+
<Word>byte</Word>
30+
<Word>short</Word>
31+
</Keywords>
32+
33+
<!-- Constants -->
34+
<Keywords color="Instruction">
35+
<Word>aconst_null</Word>
36+
<Word>dconst_</Word>
37+
<Word>fconst_</Word>
38+
<Word>iconst_m1</Word>
39+
<Word>iconst_</Word>
40+
<Word>lconst_</Word>
41+
</Keywords>
42+
43+
<!-- Loads -->
44+
<Keywords color="Instruction">
45+
<Word>aload</Word>
46+
<Word>aaload</Word>
47+
<Word>anewarray</Word>
48+
<Word>arraylength</Word>
49+
<Word>baload</Word>
50+
<Word>caload</Word>
51+
<Word>daload</Word>
52+
<Word>faload</Word>
53+
<Word>iaload</Word>
54+
<Word>laload</Word>
55+
<Word>saload</Word>
56+
<Word>getfield</Word>
57+
<Word>getstatic</Word>
58+
<Word>ldc</Word>
59+
<Word>ldc_w</Word>
60+
<Word>ldc2_w</Word>
61+
<Word>multianewarray</Word>
62+
<Word>newarray</Word>
63+
<Word>new</Word>
64+
<Word>aload_</Word>
65+
<Word>dload</Word>
66+
<Word>dload_</Word>
67+
<Word>fload</Word>
68+
<Word>fload_</Word>
69+
<Word>iload</Word>
70+
<Word>iload_</Word>
71+
<Word>lload</Word>
72+
<Word>lload_</Word>
73+
</Keywords>
74+
75+
<!-- Stores -->
76+
<Keywords color="Instruction">
77+
<Word>astore</Word>
78+
<Word>astore_</Word>
79+
<Word>dstore</Word>
80+
<Word>dstore_</Word>
81+
<Word>fstore</Word>
82+
<Word>fstore_</Word>
83+
<Word>istore</Word>
84+
<Word>istore_</Word>
85+
<Word>lstore</Word>
86+
<Word>lstore_</Word>
87+
<Word>sastore</Word>
88+
<Word>bastore</Word>
89+
<Word>fastore</Word>
90+
<Word>dastore</Word>
91+
<Word>lastore</Word>
92+
<Word>iastore</Word>
93+
<Word>aastore</Word>
94+
</Keywords>
95+
96+
<!-- Stack -->
97+
<Keywords color="Instruction">
98+
<Word>dup</Word>
99+
<Word>dup_x1</Word>
100+
<Word>dup_x2</Word>
101+
<Word>dup2</Word>
102+
<Word>dup2_x1</Word>
103+
<Word>dup2_x2</Word>
104+
<Word>pop</Word>
105+
<Word>pop2</Word>
106+
<Word>swap</Word>
107+
</Keywords>
108+
109+
<!-- Arithmetic -->
110+
<Keywords color="Instruction">
111+
<Word>dadd</Word>
112+
<Word>ddiv</Word>
113+
<Word>dmul</Word>
114+
<Word>dneg</Word>
115+
<Word>drem</Word>
116+
<Word>dsub</Word>
117+
<Word>fadd</Word>
118+
<Word>fdiv</Word>
119+
<Word>fmul</Word>
120+
<Word>fneg</Word>
121+
<Word>frem</Word>
122+
<Word>fsub</Word>
123+
<Word>iadd</Word>
124+
<Word>idiv</Word>
125+
<Word>imul</Word>
126+
<Word>ineg</Word>
127+
<Word>irem</Word>
128+
<Word>isub</Word>
129+
<Word>ishl</Word>
130+
<Word>ishr</Word>
131+
<Word>iushr</Word>
132+
<Word>ixor</Word>
133+
<Word>ladd</Word>
134+
<Word>ldiv</Word>
135+
<Word>lmul</Word>
136+
<Word>lneg</Word>
137+
<Word>lrem</Word>
138+
<Word>lsub</Word>
139+
<Word>lshl</Word>
140+
<Word>lshr</Word>
141+
<Word>lushr</Word>
142+
<Word>lxor</Word>
143+
<Word>iand</Word>
144+
<Word>land</Word>
145+
<Word>ior</Word>
146+
<Word>lor</Word>
147+
</Keywords>
148+
149+
<!-- Type Conversion -->
150+
<Keywords color="Instruction">
151+
<Word>d2f</Word>
152+
<Word>d2i</Word>
153+
<Word>d2l</Word>
154+
<Word>f2d</Word>
155+
<Word>f2i</Word>
156+
<Word>f2l</Word>
157+
<Word>i2b</Word>
158+
<Word>i2c</Word>
159+
<Word>i2d</Word>
160+
<Word>i2f</Word>
161+
<Word>i2l</Word>
162+
<Word>i2s</Word>
163+
<Word>l2d</Word>
164+
<Word>l2f</Word>
165+
<Word>l2i</Word>
166+
</Keywords>
167+
168+
<!-- Control Flow -->
169+
<Keywords color="Instruction">
170+
<Word>goto</Word>
171+
<Word>goto_w</Word>
172+
<Word>jsr</Word>
173+
<Word>jsr_w</Word>
174+
<Word>ret</Word>
175+
<Word>return</Word>
176+
<Word>dreturn</Word>
177+
<Word>freturn</Word>
178+
<Word>ireturn</Word>
179+
<Word>lreturn</Word>
180+
<Word>areturn</Word>
181+
<Word>ifnonnull</Word>
182+
<Word>ifnull</Word>
183+
<Word>lookupswitch</Word>
184+
<Word>tableswitch</Word>
185+
<Word>ifeq</Word>
186+
<Word>ifne</Word>
187+
<Word>if_icmplt</Word>
188+
<Word>if_icmpge</Word>
189+
<Word>if_icmple</Word>
190+
<Word>if_icmpeq</Word>
191+
<Word>if_icmpne</Word>
192+
<Word>if_icmpgt</Word>
193+
194+
</Keywords>
195+
196+
<!-- Methods -->
197+
<Keywords color="Instruction">
198+
<Word>invokedynamic</Word>
199+
<Word>invokeinterface</Word>
200+
<Word>invokespecial</Word>
201+
<Word>invokestatic</Word>
202+
<Word>invokevirtual</Word>
203+
</Keywords>
204+
205+
<!-- Object / Field Operations -->
206+
<Keywords color="Instruction">
207+
<Word>instanceof</Word>
208+
<Word>checkcast</Word>
209+
<Word>monitorenter</Word>
210+
<Word>monitorexit</Word>
211+
<Word>putfield</Word>
212+
<Word>putstatic</Word>
213+
</Keywords>
214+
215+
<!-- Misc -->
216+
<Keywords color="Instruction">
217+
<Word>iinc</Word>
218+
<Word>nop</Word>
219+
<Word>wide</Word>
220+
<Word>sipush</Word>
221+
<Word>bipush</Word>
222+
</Keywords>
223+
224+
<!-- Comments -->
225+
<Rule color="Comment">//.*$</Rule>
226+
227+
<!-- Labels: disassembly addresses (e.g., 0:, 1:) -->
228+
<Rule color="Label">^\s*\d+:</Rule>
229+
230+
<Rule color="Number">\b\d+\b</Rule>
231+
232+
</RuleSet>
233+
</SyntaxDefinition>

0 commit comments

Comments
 (0)