I'm working with the llvm-clang compiler, compiling simple C functions down to assembly on an ARMv7-A processor. I am trying to figure out what this instruction does.
SUB sp, sp, #65, 30
Obviously it's making room on the stack pointer for some local variables, but I've never seen an ARM SUB instruction with four operands. I'm guessing that the 30 modifies the #65 somehow, but I don't know how, and I haven't been able to find details in the ARM Architecture Reference Manual. Any suggestions?
For the curious, this is at the beginning of a program that creates an 8 x 8 identity matrix of integers, so I would expect the sp to need to make room for at least 8 x 8 x 4 bytes on the stack.