реклама на сайте
подробности

 
 
> С и asm-вставки, Локальные переменные
Xeon
сообщение Mar 30 2012, 06:05
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 140
Регистрация: 21-04-11
Пользователь №: 64 524



Всем доброго времени суток!!! Использую AVR Stidio 5. Написал программу и теперь надо её оптимизировать... некоторые расчёты уж компилятор сделал больно длинные (в смысле по количеству команд), хотя можно намного проще... Как мне известно локальные переменные обычно хранятся либо в стеке либо в регистрах... Вопрос следующий: как назначить переменной конкретный регистр или как узнать в каком регистре находится переменная, чтоб в дальнейшем иметь к ней доступ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Mar 30 2012, 09:22
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (MaxiMuz @ Mar 30 2012, 10:24) *
Чем отличается обьявление:
Ничем. Они эквивалентны.

QUOTE (Xeon @ Mar 30 2012, 11:13) *
В пдфке по второй ссылке, говориться что в asm-вставку операнды можно передавать по имени
Да, можно. Смотрите:
CODE
    uint8_t Tmp;
    bpm_driver::state * pTmp;

    asm volatile (
//        pTmp = get_update_src();
        "PUSH %[tmp]                \r\n"
        "IN %[tmp], %[sreg]         \r\n"
        "PUSH %[tmp]                \r\n"
        "PUSH %A[ptr]               \r\n"
        "PUSH %B[ptr]               \r\n"
        "LDS  %A[ptr], %[state]     \r\n"
        "LDS  %B[ptr], %[state]+1     \r\n"
        :[ptr]"=z"(pTmp), [tmp]"=r"(Tmp)
        :[sreg] "I" (_SFR_IO_ADDR(SREG))
        ,[state]"m"(bpm_driver::pState)
     );


QUOTE (Xeon @ Mar 30 2012, 11:13) *
У меня почему то это не вышло, писал следующее:
По симптомам "у меня не вышло" можно поставить лишь один диагноз: "значит что-то делали неправильно". Объясните, что вы хотели сделать и что получили?

QUOTE (Xeon @ Mar 30 2012, 11:13) *
Вот кусок коды на С который хочу заставить работать быстрей:
CODE
    FsummRe[FLookignForFreq] += (int32_t) (Values[CurVal]*cosVal);
В этой строке приведение типа либо абсолютно лишнее либо используется не там, где нужно. Как объявлено Values?

Выложите всю функцию со всеми объявлениями в виде одного файла, который можно компилить отдельно и экспериментировать.
QUOTE (Xeon @ Mar 30 2012, 12:02) *
Тип процессора правильный, точно... Использую XMega32 A4... По даташиту данные микроконтроллеры поддерживают команду MULS. Может на самом деле есть где нибудь у компилятора настройка по этому поводу.
С хмегами не работал и не собираюсь, но, возможно, компилятор не очень свежий и еще не умеет гененрить MULS.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Xeon   С и asm-вставки   Mar 30 2012, 06:05
- - Dog Pawlowa   Цитата(Xeon @ Mar 30 2012, 09:05) Всем до...   Mar 30 2012, 06:23
- - Сергей Борщ   QUOTE (Xeon @ Mar 30 2012, 09:05) Вопрос ...   Mar 30 2012, 06:32
|- - Xeon   Нашел немного инфы по asm-вставкам здесь (может ко...   Mar 30 2012, 08:13
- - Xeon   Использую оптимизацию -Оs...   Mar 30 2012, 06:35
- - MaxiMuz   Чем отличается обьявление: Кодregister uint16_t Tm...   Mar 30 2012, 07:24
- - XVR   Судя по листигну компилятор не в курсе, что сущест...   Mar 30 2012, 08:35
- - Xeon   Тип процессора правильный, точно... Использую XMeg...   Mar 30 2012, 09:02
- - XVR   Вообще код странный. Там ни одного перехода нет, и...   Mar 30 2012, 09:16
- - MaxiMuz   если всеже будет обьявлять регистровые переменные ...   Mar 30 2012, 12:17
|- - Сергей Борщ   QUOTE (MaxiMuz @ Mar 30 2012, 15:17) пиши...   Mar 30 2012, 14:17
|- - MaxiMuz   Цитата(Сергей Борщ @ Mar 30 2012, 17:17) ...   Mar 31 2012, 07:12
- - Xeon   Привожу исходники: Немного опишу: первоночальная ...   Apr 1 2012, 05:59
- - XVR   А вы все таки откомпилируйте реальный код и посмот...   Apr 1 2012, 08:46
- - Xeon   Попробую... Да одна такая таблица получается) это ...   Apr 1 2012, 17:58
- - alexeyv   Перед тем как оптимизировать на асме, разберитесь ...   Apr 2 2012, 04:56
|- - Xeon   Цитата(alexeyv @ Apr 2 2012, 07:56) Спа...   Apr 2 2012, 07:46
|- - XVR   Цитата(Xeon @ Apr 2 2012, 11:46) Спасибо...   Apr 2 2012, 08:30
|- - alexeyv   Цитата(XVR @ Apr 2 2012, 14:30) На достат...   Apr 2 2012, 09:04
|- - =GM=   Цитата(XVR @ Apr 2 2012, 07:30) ... у вас...   Apr 2 2012, 09:19
- - Xeon   Возник следующий вопрос - как в на асме прочитать ...   Apr 6 2012, 08:46
- - alexeyv   1. pm не используется для вызова подпрограм. Для в...   Apr 9 2012, 03:56
- - fox2trot   Вообще то, при постановке вопроса следовало бы уто...   Apr 12 2012, 16:40


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 05:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016