<div dir="ltr"><div dir="ltr"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">On Mon, Jul 8, 2019 at 1:20 AM Seiya Nuta via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi all,<br>
<br>
I'm going to implement syntax highlighting in llvm-objdump based on<br>
Rich Disassembly[1] and I'd like to hear your comments on how should I<br>
implement it. Now I have two ideas to implement the feature:<br>
<br>
(a) Make MCInstPrinter return a well-typed value and traverse it in<br>
llvm-objdump to highlight the disassembly.<br>
(b) Parse the rich disassembly output string in the llvm-objdump and<br>
highlight the disassembly.<br>
<br>
Making MCInstPrinter return the "well-typed" marked-up value just like<br>
abstract syntax tree instead of writing an annotated string into a<br>
raw_ostream sounds more preferable way to me. However, it would<br>
involve large changes to the existing MCInstPrinter implementations.<br>
<br>
In contrast, parsing the rich disassembly output in llvm-objdump<br>
sounds a bit awkward, but we don't need to change the MCInstPrinter at<br>
all. That said, parsing the text surely degrades the disassemble<br>
performance so we should disable the parsing and highlighting by<br>
default. I wrote and uploaded a prototype of this [2].<br>
<br>
Do you have any thoughts?<br>
<br>
Thanks,<br>
Seiya<br>
<br>
[1] <a href="https://llvm.org/docs/MarkedUpDisassembly.html" rel="noreferrer" target="_blank">https://llvm.org/docs/MarkedUpDisassembly.html</a><br>
[2] <a href="https://reviews.llvm.org/D64311" rel="noreferrer" target="_blank">https://reviews.llvm.org/D64311</a><br><br></blockquote><div><br></div><div>I really dislike the idea of having llvm-objdump do any assembly parsing.</div><div><br></div><div>Another solution would be to have MCInstPrinter also be able to store (range, semantic) pairs that can then be used to insert highlighting.</div><div><br></div><div>- Michael SpencerĀ </div></div></div>