Page 3 of 5

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 2:09 pm
by Serge
Я так понимаю, что динамическая линковка будет большой проблемой для MSVC
Она и сейчас проблематична. Для MSVC надо выстраивать свою инфраструктуру. Пока её видно. Проприетарность компилятора создаёт много сложностей. Он не предназначен для создания приложений для других систем (интересно, есть ли в EULA прямой запрет), часто использует встроенные функции, которых нет в открытых исходниках. Их дизассемблирование из бинарников и конвертация в исходный код сомнительна по лицензионной чистоте (привет ac97wav!). Математическая библиотека закрыта полностью, её надо писать заново.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 2:49 pm
by Mario_r4
Serge
Что то я не понял. Раз мы купили (ну пусть арендовали, мелкософт нынче эту идею задвигает) инструмент, то как это так мы не имеем полных прав на производный продукт? О_о

Вот мы купили молоток (ну пусть арендовали, "дядядебил лимитед" нынче эту идею задвигает) и чо мы теперь имеем право забивать гвозди только фирмы "дядядебил лимитед" и только в материалы продаваемые фирмой "дядядебил лимитед"? Это же маразм полнейший! Раз так, то следующего человека, который будет настаивать, что компилятор MSVC лучший компилятор во всех отношениях я буду посылать далеко.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 3:08 pm
by Leency
Mario_r4 wrote:Serge Это же маразм полнейший! Раз так, то следующего человека, который будет настаивать, что компилятор MSVC лучший компилятор во всех отношениях я буду посылать далеко.
Серж не утверждал. РеактОС, например, юзает их компилятор.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 3:46 pm
by SoUrcerer
Mario, частенько в инструкциях к фирменным инструментом пишут "гарантия распространяется только на отказы, связанные с использованием сертифицированных расходных материалов". Это я, к примеру, про обжимки говорю. Не удивлюсь, если с молотками точно так же.

Serge, MSVC EULA:
General License Grant. Microsoft grants to you as an individual, a personal, nonexclusive license to make and use copies of the SOFTWARE PRODUCT for the sole purposes of designing, developing, and testing your software product(s) that are designed to operate in conjunction with any Microsoft operating system product.
Так что использование MSVC для Колибри - прямое нарушение лицензии.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 3:58 pm
by SoUrcerer
Мх, в разных версиях EULA по-разному написано. Где-то просто:
Microsoft grants to you as an individual, a personal, nonexclusive license to make and use copies of the SOFTWARE PRODUCT for the purpose of designing, developing, and testing your software product(s).
И точка.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 4:23 pm
by Serge
Reactos отдельная тема.
MSVC один из лучших оптимизирующих компиляторов, но всё это богатство только под Windows по естественной причине.
Компиляция программ для других систем обещает массу проблем. Для mingw приходится отменять встроенные defines _Win32 _WIN32 WIN32 _MSC_VER иначе условная компиляция подключает микрософтские инклюды и предназначенные для Windows куски кода. Кроссплатформенность превращается в кошмар. Многие вещи написаны только под gcc и с msvc не дружат.
Короче у меня большие сомнения в применимости msvc для сборки больших проектов в Колибри.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 4:37 pm
by CleverMouse
Serge wrote:Продолжение. TLS

Однопоточные приложения могут использовать библиотеки, которые будут создавать дополнительные потоки. Поэтому TLS предлагается создавать всегда, независимо от числа потоков в программе.
  • fs:0 хранит id текущего потока
  • fs:4 зарезервирован для id процесса/адресного пространства
  • fs:8 нижняя граница стека потока
  • fs:12 верхняя граница стека потока
  • fs:16-1020 доступны приложениям
Линейный адрес сегмента fs не предусмотрен? Указатель на fs:0 получить невозможно?

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 5:19 pm
by Serge
CleverMouse
Нет, я предполагал tls для хранения указателей, а не структур данных. Если необходимо, можно занять fs:0, сдвинув остальное.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 7:19 pm
by CleverMouse
Кодогенератор MSVC может выдавать обращения к fs:0 и fs:2Ch. Если их зарезервировать под что-нибудь, потом могут быть большие проблемы. Ядро Linux, если я правильно помню, не резервирует никаких данных в fs и вообще устанавливает fs только по просьбе программы, зато резервирует целых три TLS-селектора, один для glibc, один для Wine, один на всякий случай.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 8:26 pm
by Serge
CleverMouse
Хорошо, тогда fs:0 и fs:2Ch будут оставлены для msvc/wine.
А адрес сегмента tls нужен ?

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 9:28 pm
by CleverMouse
Я думаю, стоит адрес сегмента tls хранить.

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 9:34 pm
by Serge
CleverMouse
Хорошо, тогда
  • fs:0 зарезервировано
  • fs:4 линейный адрес tls
  • fs:8 pid
  • fs:12 зарезервировано
  • fs:16 нижняя граница стека
  • fs:20 верхняя граница стека
  • fs:2Ch зарезервировано
Ещё есть предложения / замечания ?

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 11:11 pm
by Mario_r4
Еще у меня предложение/замечание написать потому EXAMPLE.ASM с пояснениями какие поля не понадобятся для типичной средней программы.
А то я от вашего "птичьего" языка уже запутался. :wink:

Re: Длина командной строки и пути к файлу при запуске

Posted: Fri Oct 04, 2013 11:22 pm
by Serge
Если не будет замечаний по заголовку, для простой программы не использующей PE DLL, не понадобятся поля import и eimport. Неиспользуемые поля заголовка должны быть нулевыми.

Re: Длина командной строки и пути к файлу при запуске

Posted: Sat Oct 05, 2013 1:14 am
by art_zh
Serge wrote:Ещё есть предложения / замечания ?
Так как насчет указателя очереди GUI-запросов?