You're lucky to be working with a module that was written from scratch. The great majority of the C code of BBC BASIC for SDL 2.0 was created more-or-less 'mechanically' from the assembly language source code of BBC BASIC for Windows and it's anything but 'nice', it's really messy with meaningless variable names like esi or ebp reflecting the register used to hold that value in the assembler code.
I had more-or-less assumed that the naïve approach I'd adopted for the 32-bit ARM assembler wouldn't be appropriate for the 64-bit version, and that one would need to move to a table-driven method similar to what is used for the x86 assemblers. Do I gather that you are continuing to use much the same approach as the 32-bit assembler? Do you feel that would be extendable if one wanted to support floating-point and/or vector (SIMD) instructions in the future?