Возможно ли принудительное генерирование 32-битных команд большого пальца, когда это возможно?Как заставить gcc генерировать большие 32-битные инструкции?
Например, у меня есть:
int main(void) {
8000280: b480 push {r7}
8000282: b085 sub sp, #20
8000284: af00 add r7, sp, #0
uint32_t a, b, c;
a = 1;
8000286: 2301 movs r3, #1
8000288: 60fb str r3, [r7, #12]
b = 1;
800028a: 2301 movs r3, #1
800028c: 60bb str r3, [r7, #8]
c = a+b;
800028e: 68fa ldr r2, [r7, #12]
8000290: 68bb ldr r3, [r7, #8]
8000292: 4413 add r3, r2
8000294: 607b str r3, [r7, #4]
while (1) ;
8000296: e7fe b.n 8000296 <main+0x16>
Но все они палец 16 бит. По причине тестирования я хочу 32-битные инструкции большого пальца.
Я думал, что весь смысл Thumb заключается в том, что он предпочитает 16-битные инструкции? –
Возможно. Однако, если возможно, я хотел бы генерировать указатели большого пальца. (Cortex M4) – jsmith
Я не эксперт здесь, у меня даже нет процессора ARM, но [руководство, которое я нахожу] (http://stackoverflow.com/questions/10638130/what-is-the-arm -thumb-instruction-set) кажется мне совершенно понятным, что вы преследуете невозможную задачу. Если вы хотите выпустить 32-разрядные инструкции, просто скомпилируйте стандартный набор команд ARM. Если это неудовлетворительно, подумайте о том, почему * вы пытаетесь это сделать, и, возможно, кто-то может дать вам лучшее решение. –