Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как запретить кейлу оптимизировать ассемблерные вставки
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sergvks
Суть проблемы: например, в функции нахождения минимального модуля:
MOVS term,a
RSBMI term,term,#0
MOVS result,b
RSBMI result,result,#0
CMP result,term
MOVPL result,term
кейл оптимизирует:
MOVS term,a
MOVS result,b
RSBMI term,term,#0
RSBMI result,result,#0
т.е. получается лажа, поэтому вопрос заключается в том, как обойти эту проблему ?
aaarrr
Хм. А в RVCT все нормально получается. Попробуйте разбить на несколько вставок, а лучше сделайте честную процедуру на asm'е.
sergvks
Цитата(aaarrr @ Aug 13 2008, 13:54) *
Хм. А в RVCT все нормально получается. Попробуйте разбить на несколько вставок, а лучше сделайте честную процедуру на asm'е.

Дело в том, что это лишь кусочек большой функции. Не подскажете, а где можно посмотреть пример как оформить честную процедуру на asm'е в отдельном файле, а в examples к сожалению пример только online ассемблера.
aaarrr
Цитата(sergvks @ Aug 13 2008, 18:14) *
Не подскажете, а где можно посмотреть пример как оформить честную процедуру на asm'е в отдельном файле, а в examples к сожалению пример только online ассемблера.


Вот честная процедура из примеров RVDS:

Код
        AREA    SCopy, CODE, READONLY

        EXPORT strcopy
strcopy                
       ; r0 points to destination string
       ; r1 points to source string
        LDRB    r2, [r1],#1    ; load byte and update address
        STRB    r2, [r0],#1    ; store byte and update address;
        CMP     r2, #0         ; check for zero terminator
        BNE     strcopy        ; keep going if not
        MOV     pc,lr          ; Return

        END


Это минимум того, что должно быть в .s файле. Описание директив ассемблера есть в разделе "RealView Assembler User's Guide" Keil'овского мануала.

Для корректной передачи и возвращения параметров еще потребуется изучить Procedure Call Standard for the ARM Architecture.
sergvks
Спасибо. Теперь всё понятно и всё работает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.