This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Is there a list of all opcodes mnemonics understood by each architecture?

Greetings,

I'm currently experimenting with Jekyll and I'm trying to make an GNU ARM Assembly syntax highlighter for Rouge.

However, the ARM Architecture Reference Manual does not seem to have a simple complete list of mnemonics. They are all mentioned, but not in a quick run-down list.

I'm currently trying to extract the mnemonics from GNU Binutils source code but, still, is there a list of all mnemonics understood by each ARM architecture, with mention of the potential suffixes (notably on ARMv7) ?

  • Hi,

    Section A8.8 of the ARMv7-AR Architecture Reference Manual (ARM DDI 0406C.c) lists all instructions in alphabetical order.

    Similarly in the ARMv8-A Architecture Reference Manual (ARM DDI 0487A.j):

    • Section C6.2 lists all base A64 instructions
    • Section C7.2 lists all A64 floating-point and Advanced SIMD instructions
    • Section F5.1 lists all base T32 and A32 instructions
    • Section F6.1 lists all AArch32 floating-point and Advanced SIMD instructions

    Is that what you're looking for? You'll have to click through each one to see the potential suffixes, for example clicking on 'DMB' in the list in Section A8.8 of the ARMv7-AR ARM will list 'SY', 'ST', 'ISH', 'ISHST', 'NSH', 'NSHST', 'OSH', and 'OSHST'.

  • Ah, interesting !

    I had an old version (2009) of the ARMv7 architecture manual that did not have a PDF index, but it seems that the new one (ARM DDI 0406C.c) does, so I could begin extracting these informations from there, indeed, and complete with the informations of each page.

    I also found Quick Reference Cards . Are they up-to-date ? Also, looking at the copyright notice at the end, can I use these informations ? I see that some informations are missing, like the accepted options for Hints, for example.

  • Hi,

    Glad that's helpful

    Regarding the quick reference cards, I'll admit that I'm not sure. One thing to keep in mind is that those cards at the link you gave show the latest release in the change log being 'M' which was in 2008, whereas looking at the ARMv7-A Architecture Reference Manual's change log:

    • 29th April 2008 - B - Addition of VFP Half-precision and Multiprocessing Extensions <...>
    • 23 November 2011 - C (C.a) - Addition of Virtualization Extensions, Large Physical Address Extensions, Generic Timer extensions, and many other additions <...>
    • 24 July 2012 - C.b - Errata release for C.a
    • 20 May 2014 - C.c - Second errata release for C.a

    So it looks like quite a lot has happened in the ARMv7-A Architecture Reference Manual since 2008, including numerous additions, clarifications, and errata. Some of those certainly sound like they could affect the instruction listing, whether by adding new instructions or adding new suffixes to existing instructions (new system registers for example).

  • Well then, I'll start with the mnemonics described in the Architecture Manual and what I find on assembler implementations like binutils, and update from there if needs be then .

    Thanks for these explanations.