6

I am working on adding a processor to Ghidra (I have no idea what I'm doing, just working my way through based off the documentation).

I've seen SleighDevTools mentioned in the 9.1 release as being "support of processor module development", which sounds like it would be helpful to me. However, I can't find any documentation on what it does or how to use it. All, I've found is the source code for it in the Ghidra repo (no readme), and a single mention of it on reddit.

Is there documentation on SleighDevTools? If so, where is it? If not, are there any good resources for processor development besides the official Ghidra docs?

Thank you!

9
  • 2
    I believe there is no documentation for this yet, but I was reading a blog post/README/forum comment from somebody a day or two ago who had added a few processors or microcontrollers who gave some explanation of what they went through. I'll add a link if I find at again. May 20 '20 at 11:26
  • @hippietrail Look forward to seeing the link if you find it again and add it here, thanks May 21 '20 at 4:51
  • 1
    Thanks @hippietrail . I had previously found that one (linked it in my answer too), and was hoping you might have seen another one. May 21 '20 at 6:18
  • 1
    No problem, thanks for looking. Look forward to future discussions with you regarding Ghidra and reverse engineering on this site! May 21 '20 at 13:09
  • 1
    BTW. The reddit post that I was referring to was this. It sounds like it could be the one that @hippietrail was looking at.
    – Heiko
    May 21 '20 at 13:13
8

In the SleighDevTools folder, there is a pcodetest folder, with a README.txt (which is unfortunately very brief).

The documentation on SLEIGH can be found in <ghidra install dir>/docs/languages/index.html, which explains what goes in the .slaspec file for your new processor.

Some documentation on what goes in the other files like .cspec, .ldefs, .., can be found in <ghidra install dir>/Ghidra/Framework/SoftwareModeling/data/languages.

There is also an Eclipse plugin, GhidraSleighEditor, that is currently (Ghidra 9.1.2) separate from the GhidraDev eclipse plugin and must be manually installed. It can be found at <ghidra install dir>/Extensions/Eclipse/GhidraSleighEditor/, and has some documentation in the GhidraSleighEditor_README.html in that folder.

As for your question on good documentation besides the Ghidra docs:

  1. Here is the original paper on SLED, which later in modified form became SLEIGH.

  2. These slides go through an example of adding a processor to Ghidra

  3. There's also this high level guide to adding a processor.

  4. (thanks to mumbel for pointing this out) This reddit post provides valuable details on adding a processor.

  5. (thanks to Heiko) This blog contains tutorials on how to put together SLEIGH, pcode, and related concepts.

7
  • Thanks! That gives me quite a few more things to work off of.
    – Heiko
    May 21 '20 at 13:24
  • feel free to ask questions in that thread, I can maybe expand on anything that's lacking (oops posted in wrong comment chain)
    – mumbel
    May 21 '20 at 18:29
  • 1
    Oh! I see, you were the author of that reddit article? May 22 '20 at 15:47
  • 2
    Yup, Wrote that (tricore, risc-v, and 80960 modules and a few various fixes across the ghidra code base) this acct is same mumbel as reddit.com/user/mumbel and github.com/mumbel
    – mumbel
    May 22 '20 at 23:02
  • 2
    I just found a good general sleigh tutorial at spinsel.dev
    – Heiko
    Aug 17 '20 at 16:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.