
Evgeny
04.03.2018
14:33:13
Цитируй, не стесняйся.

Dark
04.03.2018
14:33:44

Pavel
04.03.2018
14:34:10
Цитируй, не стесняйся.
Касаемо экспорта: The extern (C) and extern (D) calling convention matches the C calling convention used by the supported C compiler on the host system. Except that the extern (D) calling convention for Windows x86 is described here.

Google

Pavel
04.03.2018
14:34:27
всё остальное общее

Evgeny
04.03.2018
14:34:50

Pavel
04.03.2018
14:35:04
лол, обновил компилятор до 2.0.79 и теперь vibe.d не собирается вместе с проектом. Ну ЗБС

Evgeny
04.03.2018
14:35:23
тебе слово extern ни о чем не говорит?

Pavel
04.03.2018
14:35:31

Pavel
04.03.2018
14:35:58
vibed.org
502 - Bad Gateway
Connection to upstream server failed: Failed to connect to host 127.0.0.1:8003: 7F25F5190D2C
Все очень стабильно!

Evgeny
04.03.2018
14:36:42
Сам переведешь, или помочь?

Dark
04.03.2018
14:38:17
Я вообще уже не понимаю, о чем вы спорите

Evgeny
04.03.2018
14:38:40

Pavel
04.03.2018
14:39:09

Google

Evgeny
04.03.2018
14:40:05

Pavel
04.03.2018
14:40:35
А, пункт 6 же
betterC еще больше стал не нужен

Evgeny
04.03.2018
14:44:57

Pavel
04.03.2018
14:52:54
Сам переведешь, или помочь?
Не, не могу. Что тут написано: "An asm statement enables the direct use of assembly language instructions. This makes it easy to obtain direct access to special CPU features without resorting to an external assembler. The D compiler will take care of the function calling conventions, stack setup, etc."?
Если не будет большей ясности - dmd таки наколенная поделка.

Dark
04.03.2018
15:03:02
Ну тут нигде опять таки не обязывают использовать cdecl или еще что-то

Pavel
04.03.2018
15:03:39
если нет правил, куда втыкать асм?

Dark
04.03.2018
15:04:24
Хз

Pavel
04.03.2018
15:04:41
по-дефолту, судя по всему, идёт D calling convention, но написано об этом очень туманно

Dark
04.03.2018
15:05:42
Ладно, тогда приведи пример для GCC

Pavel
04.03.2018
15:05:50
какой?
gcc - набор компиляторов.

Dark
04.03.2018
15:06:26
Ну про определение calling convention

Pavel
04.03.2018
15:07:02
давай для c++ на x86

Dark
04.03.2018
15:07:31
Сойдет для примера

Pavel
04.03.2018
15:08:22
на linux

Dark
04.03.2018
15:10:17
Да я соглашусь с любым примером, главное, что бы был

Evgeny
04.03.2018
15:25:46

Google

Pavel
04.03.2018
15:27:44
Ну и как из ассемблера функции дергать и к переменным обращаться?

Evgeny
04.03.2018
15:28:38
Ну и там написано на всякий случай:
The format of the instructions is, of course, highly dependent on the native instruction set of the target CPU, and so is implementation defined.

Pavel
04.03.2018
15:29:37
Формат инструкций не интересен.

Evgeny
04.03.2018
15:30:26
А что интересно?
эти директивы в корне отличаются в DMD и LDC
причем для одной и той же платформы

Pavel
04.03.2018
15:33:06
https://dlang.org/spec/iasm.html#agregate_member_offsets
ну вот
и куда тут без соглашений?

Evgeny
04.03.2018
15:34:28

Pavel
04.03.2018
15:34:50
а локальные переменные на стеке откуда появились?

Evgeny
04.03.2018
15:34:50
пишешь имя переменной или offsetof и компилятор сам подставит, то что нужно

Pavel
04.03.2018
15:37:46
И "Implementations of D on different architectures, however, are free to innovate upon the memory model, function call/return conventions, argument passing conventions, etc. " они от нечего делать пишут?

Evgeny
04.03.2018
15:39:55

Pavel
04.03.2018
15:40:22
Я же не перевода прошу.
соглашения имеют значения - вот что

Evgeny
04.03.2018
15:40:45
Ну они там пишут ровно то, что мы тебе пытаемся доказать.

Pavel
04.03.2018
15:41:08
слава богу я ассемблеры ещё с турбопаскаля пользую

Google

Pavel
04.03.2018
15:41:38
Мне "ваши" "доказательства" ни к чему.

Evgeny
04.03.2018
15:41:51
И что? Я ассемблеры еще с Радио-86 РК пользую, к чему это писькомерство?

Pavel
04.03.2018
15:42:22
Сори, на спектруме у меня компиляторов не было.
Так чего споришь с очевидным?

Evgeny
04.03.2018
15:42:47

Pavel
04.03.2018
15:43:07
ассемблер у меня тоже был)

Evgeny
04.03.2018
15:44:11
Так чего споришь с очевидным?
С чем спорю? Ты так и не привел ссылок на доки описывающие хотя бы calling convention для неэкспортируемых функций, хоть для какого-нибудь компилятора.

Pavel
04.03.2018
15:46:15
https://msdn.microsoft.com/en-us/library/zkwh89ks.aspx

Evgeny
04.03.2018
15:47:26

Pavel
04.03.2018
15:47:55
Да? https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx

Evgeny
04.03.2018
15:48:54
Win32 API

Pavel
04.03.2018
15:49:09
А первое что?

Evgeny
04.03.2018
15:49:27
А первое для всего остального

Pavel
04.03.2018
15:49:35
Ну так?

Evgeny
04.03.2018
15:50:03
либу ты скомпилил и твои функции торчат наружу с указанными интерфейсами
Впрочем что касается Visual C++, то возможно там можно форсировать calling convention указав вручную, например __fastcall.
Но если ничего не указывать, то оно будет выбрано компилятором

Pavel
04.03.2018
15:52:56
как __cdecl

Evgeny
04.03.2018
15:53:32
как __cdecl
нет, насколько я помню, для функций-методов автоматом выбирается __fastcall

Google

Pavel
04.03.2018
15:53:41
__thiscall
у майков
у gcc https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/x86-Function-Attributes.html#x86-Function-Attributes

Evgeny
04.03.2018
15:56:17
это все описание аттрибутов, для форсированного выбора calling conventions

Pavel
04.03.2018
15:56:28
я вижу что даю)

Evgeny
04.03.2018
15:57:02
если атрубут не указан, то компилятор волен выбрать все что ему захочется

Pavel
04.03.2018
15:57:13
нет

Evgeny
04.03.2018
15:57:21
Например заинлайнить функцию

Pavel
04.03.2018
15:57:27
тем более нет

Evgeny
04.03.2018
15:57:56
что?
компилятор не может заинлайнить функцию в рамках одного объектного файла?

Pavel
04.03.2018
15:58:23
без разрешения не может

Evgeny
04.03.2018
15:58:24
Инлайнит, лично видел много раз
без разрешения

Pavel
04.03.2018
15:58:34
да-да, я сам так делал)
Без разрешения нет

Evgeny
04.03.2018
15:59:48
Ну если разрешением считать отсутствие запрещения :D

Pavel
04.03.2018
16:00:20
Может просто оптимизация была включена?
Она может включать флаг разрешения инлайнинга

Evgeny
04.03.2018
16:01:42
да и инлайнит не все функции, а те которые считает нужным.

Pavel
04.03.2018
16:01:58
Почитай что в себя включает -O2