The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск Cygwin 3.5.0, GNU-окружения для Windows , opennews (??), 01-Фев-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


12. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +3 +/
Сообщение от penetrator (?), 01-Фев-24, 17:52 
я может что-то не понял, но разве нативный код не зависит от хидеров, который есть только в линухе? кто будет это транслировать в Win32 API?
Ответить | Правка | Наверх | Cообщить модератору

15. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от Аноним (5), 01-Фев-24, 17:59 
> я может что-то не понял, но разве нативный код не зависит от
> хидеров, который есть только в линухе? кто будет это транслировать в
> Win32 API?

mingw-w64 как раз и является прослойкой хидеров, сабж дополнительная либа-прослойка неэмулятора линукс и репозитории собранных файлов. Дело не в хидерах, а в недоступных апи в либц венды.

Ответить | Правка | Наверх | Cообщить модератору

33. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от penetrator (?), 02-Фев-24, 06:01 
так хидеры фактически описывают таблицу экспорта, те же шары вид сбоку
Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +1 +/
Сообщение от n00by (ok), 02-Фев-24, 08:26 
Так в Windiws системные dll не экспортируют например mremap(). Вот Cygwin и эмулирует её через memcpy() (или уже передалали на резерв+коммит?)
Ответить | Правка | Наверх | Cообщить модератору

44. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от penetrator (?), 04-Фев-24, 07:08 
> Так в Windiws системные dll не экспортируют например mremap(). Вот Cygwin и
> эмулирует её через memcpy() (или уже передалали на резерв+коммит?)

системные либы в винде вообще не экспотируют что-то типа mremap там везде паскалевская нотация и два варианта функций с уникодом и без (W / A), а еще STDCALL, там свое апи

и ты вообще не туда полез, я говорю что заголовочные файлы для сишки "фактически" описывают таблицу экспорта конкретных либ, и сами по себе не имеют смысла

Ответить | Правка | Наверх | Cообщить модератору

47. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от n00by (ok), 04-Фев-24, 10:58 
>> Так в Windiws системные dll не экспортируют например mremap(). Вот Cygwin и
>> эмулирует её через memcpy() (или уже передалали на резерв+коммит?)
> системные либы в винде вообще не экспотируют что-то типа mremap там везде
> паскалевская нотация и два варианта функций с уникодом и без (W
> / A), а еще STDCALL, там свое апи

Не надо путать конвенцию вызова (Pascall там нет, в 32-х разрядной Windows была stdcall и в редких случаях fastcall) и предоставляемые системные сервисы (API).

Ближайшим аналогом mmap() является NtMapViewOfSection() или обёртка над ней VirtualAllocEx() из Win32 API. То есть mmap() можно реализовать в заголовочном файле как inline функцию или макрос, транслятор выдаст рабочий exe-шник, при инициализации процесса он слинкуется с чем надо. C mremap() так просто не получится (работать будет, но не так быстро как в Linux).

> и ты вообще не туда полез, я говорю что заголовочные файлы для
> сишки "фактически" описывают таблицу экспорта конкретных либ, и сами по себе
> не имеют смысла

Не знаю, кто куда полез, но вот первое попавшееся "описание таблицы экспорта"

#define malloc(foo) HeapAlloc(GetProcessHeap(), HEAP_NO_SERIALIZE, foo)

Ответить | Правка | Наверх | Cообщить модератору

50. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от penetrator (?), 04-Фев-24, 19:33 
> в 32-х разрядной Windows была stdcall

а в 64 битной по-другому? ясно понятно )))))))

#define WINAPI      __stdcall

> То есть mmap() можно реализовать в заголовочном файле как inline функцию или макрос

это не означает, что не будет таких функций которые нельзя заинлайнить через макрос и им не нужна библиотека

A header file is a file with extension .h contains C function declarations and macro definitions.

Все что не макрос (константа и бла бла бла), то декларация экспортируемой функции библиотеки, для которой этот хидер файл написан. Азы сей... нах это жевать?

Ответить | Правка | Наверх | Cообщить модератору

53. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от n00by (ok), 05-Фев-24, 16:42 
>> в 32-х разрядной Windows была stdcall
> а в 64 битной по-другому? ясно понятно )))))))

Да как бы не до смеху. Набрать в поисковике "windows 64 calling convention" и прочитать

The first four arguments are placed onto the registers. That means RCX, RDX, R8, R9 (in that order) for integer, struct or pointer arguments, and XMM0, XMM1, XMM2, XMM3 for floating point arguments. Additional arguments are pushed onto the stack (right to left).

В fastcall использовались первые два регистра из списка. В __stdcall всё идёт через стек.

> #define WINAPI      __stdcall

Это откуда и к чему?

>> То есть mmap() можно реализовать в заголовочном файле как inline функцию или макрос
> это не означает, что не будет таких функций которые нельзя заинлайнить через
> макрос и им не нужна библиотека

Я вот реально не пойму, что тут написано. Какая библиотека? Вот реализация стандартной библиотеки плюсов (в т.ч. включает и сишную) https://github.com/icestudent/ontl практически всё header-only, которой нужна только ntdll.dll. Так же возможно и POSIX туда добавить.

> A header file is a file with extension .h contains C function
> declarations and macro definitions.
> Все что не макрос (константа и бла бла бла), то декларация экспортируемой
> функции библиотеки, для которой этот хидер файл написан. Азы сей... нах
> это жевать?

И я не знаю, зачем жевать азы, когда есть стандарт. Там, внезапно, не обнаруживается определение термина "header file". Есть понятие единица трансляции, и директива #include может включать в неё что угодно, лишь бы препроцессор прожевал:

6.10.2 Source file inclusion

Constraints

1 A #include directive shall identify a header or source file that can be processed by the implementation.

Ответить | Правка | Наверх | Cообщить модератору

54. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от penetrator (?), 05-Фев-24, 22:32 
из виндового SDK, там всегда был __stdcall в сырцах и для 32-битных функций и 64-битных функций, но есть нюанс, который называется Microsoft x64 calling convention

When compiling for the x64 architecture in a Windows context (whether using Microsoft or non-Microsoft tools), stdcall, thiscall, cdecl, and fastcall all resolve to using this convention.

-----

ну не понимаешь так не понимаешь

Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от n00by (ok), 06-Фев-24, 07:53 
Не понимаю. Будь добр и объясни, зачем ты мне это пишешь? Напомню, что ты начал с "там везде паскалевская нотация". Намекаешь, что понял свою ошибку?
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от Александр (??), 03-Фев-24, 00:51 
Не совсем. Windows не совместим с POSIX. Cygwin и msis - это по сути POSIX подсистема и окружение.
Ответить | Правка | К родителю #33 | Наверх | Cообщить модератору

45. "Выпуск Cygwin 3.5.0, GNU-окружения для Windows "  +/
Сообщение от penetrator (?), 04-Фев-24, 07:11 
> Не совсем. Windows не совместим с POSIX. Cygwin и msis - это
> по сути POSIX подсистема и окружение.

строго говоря до Windows 8 там была Microsoft POSIX subsystem, потом воткнули WSL

но это вообще никак не связано с тем что я написал изначально

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру