|
IAR |
|
|
|
Sep 25 2006, 15:41
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Блин ща крыша поедет. Почему не компилится: Код ..... asm("IN R0,PIND"); ..... (кстати это пример из мануала на компилер стр.95) Пишет : Error[Og005]: Unknown symbol in inline assembly: "PIND" D:\newOS\main.c 18 Файл хидера для выбранного проца подключен и в функциях С PIND определен.
|
|
|
|
|
 |
Ответов
|
Sep 25 2006, 18:05
|
Частый гость
 
Группа: Свой
Сообщений: 83
Регистрация: 25-11-05
Из: odessa
Пользователь №: 11 397

|
если так необходимы ассемблерные команды, то почему бы не писать всё на асме? =) для этого и авр студия есть =) ведь если берёшься за си, то наверняка для того чтобы облегчить себе жизнь или для придания программе универсальности? по теме: а строчки Код unsigned char tmp = 0x00; tmp = PIND; компиляться?
--------------------
Вся жизнь - ништяк, все бабы - леди, а солнце - шар дающий свет
|
|
|
|
|
Sep 25 2006, 18:58
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(junoSynthesizer @ Sep 25 2006, 22:05)  если так необходимы ассемблерные команды, то почему бы не писать всё на асме? =) для этого и авр студия есть =) ведь если берёшься за си, то наверняка для того чтобы облегчить себе жизнь или для придания программе универсальности? по теме: а строчки Код unsigned char tmp = 0x00; tmp = PIND; компиляться? Ну ооооочень смешно и не по теме. Мне что в inline асемблерных вставках вместо имен SFR их адреса вручную прописывать?
|
|
|
|
|
Sep 26 2006, 10:27
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Цитата(viael @ Sep 25 2006, 21:58)  Мне что в inline асемблерных вставках вместо имен SFR их адреса вручную прописывать? Да, если они идут внутри C кода. Причина в том что в ioxxx.h они описаны как структуры, а не как конкретный адрес. Выхода 2 либо определить как написали ранее либо делать отдельный модуль на асме и вызывать из него asm функции. Там с именами все в порядке. Прилагаю небольшой перевод как делать Asm модули.
|
|
|
|
|
Sep 26 2006, 13:26
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(&-rey @ Sep 26 2006, 14:27)  Цитата(viael @ Sep 25 2006, 21:58)  Мне что в inline асемблерных вставках вместо имен SFR их адреса вручную прописывать?
Да, если они идут внутри C кода. Причина в том что в ioxxx.h они описаны как структуры, а не как конкретный адрес. Выхода 2 либо определить как написали ранее либо делать отдельный модуль на асме и вызывать из него asm функции. Там с именами все в порядке. Прилагаю небольшой перевод как делать Asm модули. Спасибо за перевод, но я уже прочел все это в оригинале и попробовал.Но мне не подходит этот вариант так как ассемблерная вставка вызывается как функция, а мне надо обязательно inline(соответствуящая прагма не помогла)  .
|
|
|
|
|
Sep 28 2006, 23:25
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(viael @ Sep 26 2006, 16:26)  Но мне не подходит этот вариант так как ассемблерная вставка вызывается как функция, а мне надо обязательно inline(соответствуящая прагма не помогла)  . Можно поинтересоваться зачем вам это нужно? Есть конкретная задача или просто в учебных целях? Если первое, то неплохо бы ее изложить, т.к. asm вставки в C-шной функции: 1. далеко не единственое решение; 2. идеологически неправильное решение.
|
|
|
|
|
Sep 30 2006, 18:39
|
Местный
  
Группа: Свой
Сообщений: 200
Регистрация: 10-04-06
Из: Украина,Запорожье
Пользователь №: 15 979

|
Цитата(defunct @ Sep 29 2006, 03:25)  Цитата(viael @ Sep 26 2006, 16:26)  Но мне не подходит этот вариант так как ассемблерная вставка вызывается как функция, а мне надо обязательно inline(соответствуящая прагма не помогла)  . Можно поинтересоваться зачем вам это нужно? Есть конкретная задача или просто в учебных целях? Если первое, то неплохо бы ее изложить, т.к. asm вставки в C-шной функции: 1. далеко не единственое решение; 2. идеологически неправильное решение. для портирования rtos
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|