Отговори на тема  [ 19 мнения ]  Отиди на страница Предишна  1, 2
Един С въпрос 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
А какво правят "С" компилаторите при извикване на функция чрез указател който всъщност е NULL.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Мар 28, 2005 4:44 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
#define NULL 0
:)

Просто процесорът скача на адрес 0


Пон Мар 28, 2005 4:48 pm
Профил
Ранг: Професионалист
Ранг: Професионалист
Аватар

Регистриран на: Сря Окт 13, 2004 11:24 pm
Мнения: 500
Местоположение: Стара Загора
Мнение 
Цецо, от C-то нищо не отбирам, но съм правил нещо подобно на твоята задача за AT89C2052 на асемблер, идеята е че съм направил масив от jump или goto или call -ове и карам program countera да скача направо на съответният call или jump или goto, пък то от своя страна си отива където трябва и така... на тромавия атмел направо хвърчеше :
Код:
#define max_command  16                  ; 17 commands include 0
   ;Commands Dispatcher SubRoutine
   mov   temp, a
   clr     c                                        ; prepare for subtraction
   subb    a, #(max_command+1)     ; compare to max_command
   jc      go_on;
   mov   a, #0EEh
   call   send_byte      ; send error  to PC
   sjmp    ext_rcv        ; jump if byte above max_command
go_on:
   mov     a,temp
   mov     dptr,#comm_tbl  ; load comm_tbl addr.
   mov     b,#02h
   mul     ab
   jmp     @a + dptr       ; load offset to PC and jump
comm_tbl:
   sjmp    comm_0
   sjmp    comm_1
   sjmp    comm_2
   sjmp    comm_3
   sjmp    comm_4
   sjmp    comm_5
   sjmp    comm_6
   sjmp    comm_7
   sjmp    comm_8
   sjmp    comm_9
   sjmp    comm_10
   sjmp    comm_11
   sjmp    comm_12
   sjmp    comm_13
   sjmp    comm_14
   sjmp    comm_15
   sjmp    comm_16
.....................................
comm_0:
   call    function_0
   sjmp    ext_rcv         
.....................................
comm_16:
   call    function16
ext_rcv:
   ret


можеш да си наредиш колкото искаш jump-а и да си ги адресираш чрез указател, за pic предполагам че ще е нещо такова
Код:
        MOVLW   command
   ADDWF   PCL , F
   CALL      function_0
....................................
        CALL      function_last

при втория пример трябва да внимаваш за изхода от функциите не трябва да е със return а със goto щото стека ще те върне пак в масива със функциите!


Пон Мар 28, 2005 9:26 pm
Профил YIM
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ами то горе долу това ще се получи и с масив от указатели в С. То С-то си е асемблер, само дето е по прегледен.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Мар 29, 2005 10:49 am
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 19 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни