ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
180849 Топик полностью
ReAl (10.02.2010 13:10, просмотров: 208) ответил koyodza на асм-вставки не поддерживаются, разве что выносить в отдельный файл
Ой, не знаю... Klen-овая сборка от 20091127 #include <stdint.h> #define _rev(var) \ (__extension__({ \ uint32_t __result = var; \ __asm__ __volatile__ ( \ "rev %0, %0" \ : "+r" (__result) \ : \ ); \ __result; \ })) void foo(uint32_t *dst, uint32_t *src, uint32_t len) { while(len--) *dst++ = _rev(*src++); } void moo(uint32_t *dst, uint32_t *src, uint32_t len) { while(len--) *dst++ = *src++; }
arm-kgp-eabi-gcc.exe -c -O2 -mcpu=cortex-m3 -mthumb _rev.c
arm-kgp-eabi-objdump.exe -d _rev.o >_rev.dump
_rev.o: file format elf32-littlearm Disassembly of section .text: 00000000 <foo>: 0: b152 cbz r2, 18 <foo+0x18> 2: 2300 movs r3, #0 4: f851 c003 ldr.w ip, [r1, r3] 8: fa9c fc8c rev.w ip, ip c: f840 c003 str.w ip, [r0, r3] 10: 3304 adds r3, #4 12: f112 32ff adds.w r2, r2, #4294967295 16: d1f5 bne.n 4 <foo+0x4> 18: 4770 bx lr 1a: bf00 nop 0000001c <moo>: 1c: b142 cbz r2, 30 <moo+0x14> 1e: 2300 movs r3, #0 20: f851 c003 ldr.w ip, [r1, r3] 24: f840 c003 str.w ip, [r0, r3] 28: 3304 adds r3, #4 2a: f112 32ff adds.w r2, r2, #4294967295 2e: d1f7 bne.n 20 <moo+0x4> 30: 4770 bx lr 32: bf00 nop Вживую именно асм-вставку я не запускал, но этой сборкой мигание светодиодом собирается и работает :-)