-
- А "как есть"? Там 3 типа указателей, какой ему, "как есть" выбрать? - aoreh(17.08.2015 14:31)
- Зачем выбирать? Четко сказано, где взять адрес для перехода. Я хочу, чтобы функция по этому адресу, который я передаю БЫЛА вызвана и мнение компилятора по этому поводу меня мало волнует. Мои ошибки, если я ошибусь в передаче адреса - это мои Евгений(8 знак., 17.08.2015 14:38, )
- Да нет же, проблема в том, что этот дибильный компиллятор сам путает, где он и какие указатели использует, отсюда и получается, шо он кладет 2 байта, а берет 3 и т.п. - aoreh(17.08.2015 14:41)
- О! А с этого места поподробнее. Откуда 3 байта в указателе для 18-х пиков? - Евгений(17.08.2015 14:43, )
- Я так понимаю, это проистекает из особенностей архитектуры пика в работе с памятью и желанием микрочипа сделать один указатель на все виды памяти, ну а менее трех байт - оптимизация - aoreh(17.08.2015 14:54)
- А, то есть, указатель может быть 2 байта, когда он его оптимизирует, а может 3, чтобы запихнуть в единое пространство Flash, RAM и EEPROM? Я смотрел, RAM начинается с адреса 0x200000, косят под ARMы. Значит, можно сделать вывод, что есть 3-4 вида Евгений(106 знак., 17.08.2015 14:58, )
- Точнее уже ниче не скажу, этот механизм был описан где-то в документации и глюки в работе с указателями связывали именно с ним - aoreh(17.08.2015 15:00)
- И, видимо, компилятору можно как-то жестко указать, что вот тут у меня используется общий указатель и он везде передается? - Евгений(17.08.2015 14:59, )
- А вот теперь, внимание, прикол... НЕЛЬЗЯ :) Во всяком случае, два года назад было нельзя, может щас шо-то изменилось - aoreh(17.08.2015 15:01)
- Это катастрофа. :-) Все же я верю в стойких парней, держащих на своих могучих плечах историю компиляторов от майкрочип. :-) Должны они были чего-то придумать. - Евгений(17.08.2015 15:04, )
- Компилятора от microchip -- не существует. XC8 -- это бывшая PRO версия фирмы Hitech. Фирма Hitech разорилась, потому, что все воровали (а не покупали за жалкие несколько сотен долларов). Ты думаешь от силы пара индусов из микрочипа заставленные fk0(373 знак., 18.08.2015 11:09)
- Как одно из решений, можно попытаться хранить не указатели, а целочисленное и приводить в нужном месте к указателю на ф-ию, коряво, уродски, но, может, поможет, я помню у нас были попытки такого использования, но вот результат не помню уже. - aoreh(17.08.2015 15:14)
- Это катастрофа. :-) Все же я верю в стойких парней, держащих на своих могучих плечах историю компиляторов от майкрочип. :-) Должны они были чего-то придумать. - Евгений(17.08.2015 15:04, )
- А вот теперь, внимание, прикол... НЕЛЬЗЯ :) Во всяком случае, два года назад было нельзя, может щас шо-то изменилось - aoreh(17.08.2015 15:01)
- А, то есть, указатель может быть 2 байта, когда он его оптимизирует, а может 3, чтобы запихнуть в единое пространство Flash, RAM и EEPROM? Я смотрел, RAM начинается с адреса 0x200000, косят под ARMы. Значит, можно сделать вывод, что есть 3-4 вида Евгений(106 знак., 17.08.2015 14:58, )
- Я так понимаю, это проистекает из особенностей архитектуры пика в работе с памятью и желанием микрочипа сделать один указатель на все виды памяти, ну а менее трех байт - оптимизация - aoreh(17.08.2015 14:54)
- О! А с этого места поподробнее. Откуда 3 байта в указателе для 18-х пиков? - Евгений(17.08.2015 14:43, )
- Да нет же, проблема в том, что этот дибильный компиллятор сам путает, где он и какие указатели использует, отсюда и получается, шо он кладет 2 байта, а берет 3 и т.п. - aoreh(17.08.2015 14:41)
- Зачем выбирать? Четко сказано, где взять адрес для перехода. Я хочу, чтобы функция по этому адресу, который я передаю БЫЛА вызвана и мнение компилятора по этому поводу меня мало волнует. Мои ошибки, если я ошибусь в передаче адреса - это мои Евгений(8 знак., 17.08.2015 14:38, )
- А "как есть"? Там 3 типа указателей, какой ему, "как есть" выбрать? - aoreh(17.08.2015 14:31)