ksinet 0 24 апреля, 2005 Опубликовано 24 апреля, 2005 · Жалоба Некоторые критичные ко времени функции нужно писать на асме. (+ не все можно реализовать на си/си++). Собственно как вызывать с си процедуры написанные на асме понятно, понятна и передача параметров (использую ИАР 3,20 / 4,10 ). Но остается вопрос: какие регистры можно "портить" и незаботится об их восстановлении, а какие нужно обязательно сохранять? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vet 0 24 апреля, 2005 Опубликовано 24 апреля, 2005 · Жалоба Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ksinet 0 25 апреля, 2005 Опубликовано 25 апреля, 2005 · Жалоба Функции могут не заботиться о сохранении значений регистров R0–R3, R16–R23, и R30–R31 (EWAVR_CompilerReference.pdf, с.123). <{POST_SNAPBACK}> Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 26 апреля, 2005 Опубликовано 26 апреля, 2005 · Жалоба ksinet, обратите внимание также на то место в описании компилятора, где говорится о передаче функциям аргументов и получении от них результатов (C calling convention). Хорошо с этим разобравшись (а это не сложно) можно писать эффективные смешанные программы asm/C/EC++ без необходимости инлайновых ассемблерных вставок, которые практически сводят на нет возможность оптимизации и затрудняют переносимость кода. Кроме того, если Вы пишете на ассемблере обработчик прерывания, то сохранять нужно ВСЕ используемые регистры, не говоря уже о регистре состояния и иногда RAMPZ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ksinet 0 26 апреля, 2005 Опубликовано 26 апреля, 2005 · Жалоба ksinet, обратите внимание также на то место в описании компилятора, где говорится о передаче функциям аргументов и получении от них результатов (C calling convention). Хорошо с этим разобравшись (а это не сложно) можно писать эффективные смешанные программы asm/C/EC++ без необходимости инлайновых ассемблерных вставок .... <{POST_SNAPBACK}> Спасибо за совет. Обязательно прочитаю. Насчет инлайна, то я практически никогда его не использую, это черевато многими неприятностями. Сейчас перехожу с КоддВижна на ИАР и поэтому приходится учитывать множество особенностей работы в последнем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться