|
|
  |
Си для AVR |
|
|
|
Sep 4 2007, 10:26
|

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

|
Цитата(Dog Pawlowa @ Sep 4 2007, 13:11)  Или что такое Си ориентированная архитектура? 1) Наличие нескольких индексных регистров 2) Развитая косвенная адресация.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 4 2007, 11:36
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279

|
Цитата(singlskv @ Sep 4 2007, 00:44)  а код типа такой: Код ; 13 words / 13 cycles ; tmp= abcdefgh mov tmp2,tmp ; tmp2= abcdefgh andi tmp2,0b01010101; tmp2= 0b0d0f0h andi tmp, 0b10101010; tmp= a0c0e0g0 bst tmp2,0 ; T=h lsr tmp2 ; tmp2= 00b0d0f0 bld tmp2,7 ; tmp2= h0b0d0f0 lsl tmp ; tmp= 0c0e0g00 C=a adc tmp, tmp2 ; tmp= hcbedgfa mov tmp2,tmp ; tmp2= hcbedgfa andi tmp2,0b01100110; tmp2= 0cb00gf0 swap tmp2 ; tmp2= 0gf00cb0 andi tmp, 0b10011001; tmp= h00ed00a add tmp, tmp2 ; tmp= hgfedcba Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: Код ; 14 words / 14 cycles ; tmp=abcdefgh mov tmp2,tmp ror tmp rol tmp2 ror tmp rol tmp2 ror tmp rol tmp2 ror tmp rol tmp2 ror tmp andi tmp,0xf0 andi tmp2,0x0f or tmp,tmp2 swap tmp ; tmp=hgfedcba
|
|
|
|
|
Sep 4 2007, 12:58
|

Знающий
   
Группа: Свой
Сообщений: 736
Регистрация: 29-04-06
Из: Berlin
Пользователь №: 16 605

|
Цитата(defunct @ Sep 3 2007, 02:01)  pdf с bookmark'ами? Залейте, пригодится. Спасибо Слил. http://electronix.ru/forum/index.php?showtopic=36124Цитата(bbill @ Sep 4 2007, 00:00)  Залейте, пожалуйста, bbill@mail.ru Спасибо. Отправил, 66 мб х 5 файлов (в комплекте AVR-Шпак с дискетой). На Рапидшару было бы проще.
|
|
|
|
|
Sep 4 2007, 13:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Sep 4 2007, 14:00)  А x86 можно считать Си-ориентированной архитектурой? Два индексных регистра, о развитости косвенной адресации трудно судить, но она ведь есть? Буквы x бывают разные, если это '386', то 'индексные регисты' абсолютно все. Ну пример адресации: mov dx, fs:[eax + ecx*4 + 1] Ну даже если просто 86, то индексных тоже не два - si, di, sp, bp, bx.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 4 2007, 13:57
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(zltigo @ Sep 4 2007, 16:24)  Буквы x бывают разные, если это '386', то 'индексные регисты' абсолютно все. Ну пример адресации: mov dx, fs:[eax + ecx*4 + 1] Ну даже если просто 86, то индексных тоже не два - si, di, sp, bp, bx. Вот недостаток Си - полностью забывается архитектура! Строго говоря, источники расходятся в определении количества индексных регистров, относя bx к регистрам общего назначения и исключая sp ввиду его изменяемости не только программно, но и аппаратно. То есть я забыл всего лишь bp  Но я к чему? Не так то много нужно, чтобы быть Си-ориентированной архитектурой? Я думаю, что достаточно хорошего компилятора
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 4 2007, 22:10
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(kv_addr @ Sep 4 2007, 15:36)  Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: [code] ..... На самом деле мой вариант это действительно просто трюк, просто мне нравятся такие трюки и если есть возможность их применить, то я их применяю, тока тогда, когда это действительно необходимо... Примерно такие же трюки вполне реализуемы/используемы на С Эфектифность конечно чуть меньше(на 10-15%), но при этом сохраняется полная переносимость... правда на другой платформе код может оказаться неэфективным, но рабочим... Вобщем, если подитожить, учите инструмент которым Вы пользуетесь...
|
|
|
|
|
Sep 4 2007, 22:53
|

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

|
Цитата(Dog Pawlowa @ Sep 4 2007, 16:57)  относя bx к регистрам общего назначения и исключая BX никогда не был индексным регистром. (нет команд 8086-го, которые бы могли делать автоинкремент или декремент этого регистра). BX в 8086 можно использовать для базовой либо базово-индексной адресации: mov ax, [bx] <- базовая mov ax, [bx + si] <- базово-индексная. BP тоже базовый, только в сочетании с SS. SP - вещь в себе. остается и правда только два индексных регистра si, di.
|
|
|
|
|
Sep 5 2007, 07:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(defunct @ Sep 5 2007, 01:53)  нет команд 8086-го, которые бы могли делать автоинкремент или декремент этого регистра Автоинкременация не является признаком индексности или не индексности регистра - не выкручивайтесь  . Цитата BP тоже базовый, только в сочетании с SS. bp спокойно используeтся без "сочетания" с ss: mov ds:[bp],ax
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 5 2007, 09:46
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(kv_addr @ Sep 4 2007, 15:36)  Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: ... ;О) Дык, тупой rol-ror*8=16, в принципе, уступает 13-тактовому гулькин. Не тот случай, чтобы огород городить. И на-Цуется более кошерно...Что не может не радовать ;О)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|