-
- Где тут проблема? Написать функцию на ASM, включить ее в СИ-шный проект, вызвать ASM-овую функцию из СИ-шной. Все это описано в разделе Assembler language interface из IAR C/C++ Compiler Reference Guide for MSP430 rezident(31 знак., 15.04.2011 20:05)
- Да нет, конечно, не проблема. Вопрос в том, единичная это грабля или нет. Просто есть набор функций, которые находятся в одном файле и объеденены общей логикой. Можно вынести глюконат в asm файл,сейчас один, затем другой и т.д. Нехорошо это. Xитpый Kитaeц(135 знак., 15.04.2011 20:16)
- Не рекомендуется. По той причине, что компилятор не понимает ваших хотелок и работает с ресурсами по-своему. Так, как он считает оптимальным. Чтобы достигнуть консенсуса вы должны ему пояснить, что вы от него хотите, что ему можно делать и что rezident(83 знак., 15.04.2011 20:26)
- "По той причине, что компилятор не понимает ваших хотелок" Скажем так - IAR не имеет средств для объяснения ему таких хотелок. Cepгeй Бopщ(565 знак., 16.04.2011 11:43)
- Ситуация прояснилась. При выносе функции с asm вставкой во внешнюю либу всё в порядке. При обработке компилятором обоих функций с одном файле происходит ошибка. Фраза из manual " Xитpый Kитaeц(428 знак., 16.04.2011 13:53)
- Если ва полностью "строите" свою функцию (пишете ее на асме) - применима. Если часть функции строит компилятор (читай- "асм-вставка") - то неприменима, она относится к функции в целом, а не к ее части. - Cepгeй Бopщ(16.04.2011 23:38)
- Так вроде тут как раз нарушение соглашения о вызове функций. Vallav(185 знак., 17.04.2011 13:43)
- Всё верно, это шиза оптимизатора. При no_cse или no_code_motion всё работает. - Xитpый Kитaeц(17.04.2011 11:57)
- "все работает" в данном случае - удачное стечение обстоятельств. В следующей версии компилятора может перестать. Или пишите функцию полностью на асме (файл .s43), или всю на С. Асм-вставки годятся только для действий типа nop, не влияющих на Cepгeй Бopщ(22 знак., 18.04.2011 13:05)
- Это как раз и понятно , печально. - Xитpый Kитaeц(19.04.2011 02:13)
- "все работает" в данном случае - удачное стечение обстоятельств. В следующей версии компилятора может перестать. Или пишите функцию полностью на асме (файл .s43), или всю на С. Асм-вставки годятся только для действий типа nop, не влияющих на Cepгeй Бopщ(22 знак., 18.04.2011 13:05)
- Если ва полностью "строите" свою функцию (пишете ее на асме) - применима. Если часть функции строит компилятор (читай- "асм-вставка") - то неприменима, она относится к функции в целом, а не к ее части. - Cepгeй Бopщ(16.04.2011 23:38)
- Ситуация прояснилась. При выносе функции с asm вставкой во внешнюю либу всё в порядке. При обработке компилятором обоих функций с одном файле происходит ошибка. Фраза из manual " Xитpый Kитaeц(428 знак., 16.04.2011 13:53)
- "По той причине, что компилятор не понимает ваших хотелок" Скажем так - IAR не имеет средств для объяснения ему таких хотелок. Cepгeй Бopщ(565 знак., 16.04.2011 11:43)
- Не рекомендуется. По той причине, что компилятор не понимает ваших хотелок и работает с ресурсами по-своему. Так, как он считает оптимальным. Чтобы достигнуть консенсуса вы должны ему пояснить, что вы от него хотите, что ему можно делать и что rezident(83 знак., 15.04.2011 20:26)
- Да нет, конечно, не проблема. Вопрос в том, единичная это грабля или нет. Просто есть набор функций, которые находятся в одном файле и объеденены общей логикой. Можно вынести глюконат в asm файл,сейчас один, затем другой и т.д. Нехорошо это. Xитpый Kитaeц(135 знак., 15.04.2011 20:16)
- Где тут проблема? Написать функцию на ASM, включить ее в СИ-шный проект, вызвать ASM-овую функцию из СИ-шной. Все это описано в разделе Assembler language interface из IAR C/C++ Compiler Reference Guide for MSP430 rezident(31 знак., 15.04.2011 20:05)