CreateNewProcTags() over sasc and vbcc

Все что связано с программированием на Амиге.

Модераторы: striimii, Vinnny

CreateNewProcTags() over sasc and vbcc

Сообщение anny 13 апр 2006, 00:57

Такой вот вопрос к омижным кодерам. По какой причине под SASC CreateNewProcTags гурит/ребутит , под vbcc - все ок ? Т.е. вот такой мелкий пример:
Код: Выделить всё
#include <dos/dostags.h>
#include <proto/dos.h>
#include <proto/exec.h>

struct Process *player;

__saveds void play_module(void)
{

Printf("ooooo\n");
Printf("uuuu\n");
Printf("ieeetss\n");
}

int main(void)
{

printf("first\n");

player = CreateNewProcTags(
NP_Entry, &play_module,
NP_Priority, 1,
NP_Name, "Player Process",
TAG_DONE);

printf("second\n");
Delay(200);
printf("third\n");

}


so, result:

work:programming>spawn_vbcc
first
ooooo
uuuu
ieeetss
second
third

work:programming>spawn_sasc
first
second
third
work:programming>


Под vbcc, все ок. Под sasc даже через раз срабатывает (не гурит), но процесс один хрен не спавнится. Если сунуть например SystemTagList("newcli",0); то опять же под vbcc все ок, шел пускается, а под sasc - ребуты и красный мигающий экран. Пробовал и c __saveds добавлять, и без, и smalldata/code и nosmalldata/code. Короче хз, но нужно чтобы под sasc заработало. Спросил и на амига.орг, и на утилитибейс, и все молчат. Толи не знают, толи слишком просто чтобы снизайти до ответа :)

Самое хорошее был бы готовый пример, ну или объяснениe почему там ок, тут не ок. Желательно от тех кто знает, а не от тех кто хочет потупить и пофлеймить :)
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1267
Зарегистрирован: 05 дек 2004, 01:22

Re: CreateNewProcTags() over sasc and vbcc

Сообщение annoynimous 13 апр 2006, 01:50

anny писал(а):Самое хорошее был бы готовый пример, ну или объяснениe почему там ок, тут не ок. Желательно от тех кто знает, а не от тех кто хочет потупить и пофлеймить :)


монамом шагал? асмовый код сравнивал?
annoynimous
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 741
Зарегистрирован: 15 мар 2004, 15:35

Сообщение anny 13 апр 2006, 12:37

Не, монамом не смотрел. Особо в глубь не зарывался (да и большого желания нет), просто делал делал и тут вылезла такая херь которая мешает, а времени чтоб ковыряться сейчас нет ..
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1267
Зарегистрирован: 05 дек 2004, 01:22

Сообщение annoynimous 13 апр 2006, 13:45

anny писал(а):Не, монамом не смотрел. Особо в глубь не зарывался (да и большого желания нет), просто делал делал и тут вылезла такая херь которая мешает, а времени чтоб ковыряться сейчас нет ..


Ну вот таки и 'омижный прогламмист'. Времени у него, видите ли, ковыряться нет.

PS: откуда следует, чтол printf реентрабельная (разными процессами)? Особенно в сасце? Заменить на Printf (разницу, надеюсь, объяснять не нужно?)
annoynimous
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 741
Зарегистрирован: 15 мар 2004, 15:35

Сообщение anny 13 апр 2006, 15:34

Вроде я чуть выше написал же что: "Если сунуть например SystemTagList("newcli",0);" Т.е. без принтов каких бы там не было. Также пробовал и так:

player = CreateNewProcTags(
NP_Entry, &play_module,
NP_Priority, 1,
NP_Name, "Player Process",
NP_Input, Input(),
NP_CloseInput, FALSE,
NP_Output, Output(),
NP_CloseOutput, FALSE,
TAG_DONE);

тоже самое.

ps. Если не знаете , то не надо стесняться, так и скажите - не знаем :)
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1267
Зарегистрирован: 05 дек 2004, 01:22

Сообщение annoynimous 13 апр 2006, 15:42

anny писал(а):Вроде я чуть выше написал же что: "Если сунуть например SystemTagList("newcli",0);" Т.е. без принтов каких бы там не было. Также пробовал и так:


А если сунуть слово из 3 букв... В общем учимся писать так, чтоб было понятно. А то "если сунуть", видите ли... Сунуть КУДА?

PS: трассировать монамом до просветления или не ипсти мозга другим.
annoynimous
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 741
Зарегистрирован: 15 мар 2004, 15:35

Сообщение anny 13 апр 2006, 15:53

lvd, ты на самом деле такой или прикидываешься ? нахрена опять эту тупость разводить тут ? Я же НОРМАЛЬНО блять попросил не тупить и не флеймить а просто ответить тех кто знает, не знаешь - не отвечай. Куда сунуть функцию ? В жопу я ее сувал, кудаж ее еще тут сунуть. Всем спасибо за ответы, тема закрыта.
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1267
Зарегистрирован: 05 дек 2004, 01:22

Сообщение annoynimous 14 апр 2006, 13:38

anny писал(а):lvd, ты на самом деле такой или прикидываешься ? нахрена опять эту тупость разводить тут ? Я же НОРМАЛЬНО блять попросил не тупить и не флеймить а просто ответить тех кто знает, не знаешь - не отвечай. Куда сунуть функцию ? В жопу я ее сувал, кудаж ее еще тут сунуть. Всем спасибо за ответы, тема закрыта.


Хм... ну ладно, буду теперь молчать на все твои вопросы. Сиди и суй в жопу что ты там сувал...
annoynimous
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 741
Зарегистрирован: 15 мар 2004, 15:35

Сообщение anny 13 май 2006, 15:47

Если кому то интересно (что врядли, но всеже), оказалось что для того чтобы нормально работал CreateNewProcTags под sasc, нужто чтобы:

1. sasc патченный до 6.55 минимум (с 6.50 не работает).
2. функция процесса должна иметь __saveds. т.е. void __saveds funс(void)
3. самое главное. должна быть выключена проверка стека (т.е. nostkchk должно быть). вот что сказал один умный товарищ про это:
More explanation: It would compare the stack pointer for overflow at play_module, and if the pointer was lower than the limit set at startup code, it would set up a requester and exit. However, play_module was run on context of a second process, and thus stack pointer was randomly either before or after the main task stack. This is why it failed randomly.


Если хоть одно из правил не выполняется - гуры и ребуты. Под vbcc же все ок в любом случае.
anny
Беспардонный Амигофлуд
Беспардонный Амигофлуд
 
Сообщения: 1267
Зарегистрирован: 05 дек 2004, 01:22


Вернуться в Программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29

cron