Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Не знаю, какие нестандартные спецификаторы существуют, но выйти из положения можно так >>
Отправлено
Юрий_СВ (213.5.199.158) 16 апреля 2011, г. 04:48
В ответ на:
как вызывать функцию по адресу? отправлено
колян безпарольный 16 апреля 2011, г. 01:05
#include <avr/io.h>
typedef void (* fn)(void);
fn fn_1, fn_2;
int main(void)
{
fn_1=0x2346;
fn_2=0x5757;
EIND=2;
fn_1();
EIND=0;
fn_2();
while (1);
}
================================================
WinAVR формирует такой код:
int main(void)
{
fn_1=0x22346;
12a: e6 e4 ldi r30, 0x46 ; 70
12c: f3 e2 ldi r31, 0x23 ; 35
12e: f0 93 03 02 sts 0x0203, r31
132: e0 93 02 02 sts 0x0202, r30
fn_2=0x5757;
136: 87 e5 ldi r24, 0x57 ; 87
138: 97 e5 ldi r25, 0x57 ; 87
13a: 90 93 01 02 sts 0x0201, r25
13e: 80 93 00 02 sts 0x0200, r24
EIND=2;
142: 82 e0 ldi r24, 0x02 ; 2
144: 8c bf out 0x3c, r24 ; 60
fn_1();
146: 19 95 eicall
EIND=0;
148: 1c be out 0x3c, r1 ; 60
fn_2();
14a: e0 91 00 02 lds r30, 0x0200
14e: f0 91 01 02 lds r31, 0x0201
152: 19 95 eicall
154: ff cf rjmp .-2 ; 0x154 <main+0x2a>
00000156 <_exit>:
156: f8 94 cli
00000158 <__stop_program>:
158: ff cf rjmp .-2 ; 0x158 <__stop_program>
Составить ответ | Вернуться на конференцию
Ответы