@dlangru

Страница 429 из 719
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
всё остальное общее

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
то есть по-твоему extern (D) - это внутренний calling convention?
Во-твоему дальнейшие параграфы не про функции?

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
Во-твоему дальнейшие параграфы не про функции?
Ты издеваешься? Или аглицкий не разумеешь? дальнейшие параграфы это: "Except that the extern (D) calling convention for Windows x86 is described here. "

Сам переведешь, или помочь?

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

Все очень стабильно!
Это ты про DMD или Vibe.d?

Evgeny
04.03.2018
14:38:40
Pavel
04.03.2018
14:39:09
о, @nogc исключения подвезли, отлично)
Это где? Я такого не нашел там.

Google
Evgeny
04.03.2018
14:40:05
Pavel
04.03.2018
14:40:35
А, пункт 6 же

betterC еще больше стал не нужен

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
Не, не могу. Что тут написано: "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."?
тут написано, что в asm ты пишешь только тело функции, а обвязкой и передачей параметров займется компилятор. Как именно займется - детали реализации.

Если не будет большей ясности - dmd таки наколенная поделка.
Может и наколенная поделка, но явно не по той причине, о которой ты тут говоришь.

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

причем для одной и той же платформы

Ну и как из ассемблера функции дергать и к переменным обращаться?
Вот на всякий случай, подробнее нашел. https://dlang.org/spec/iasm.html#stack_variables

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. " они от нечего делать пишут?

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
Сори, на спектруме у меня компиляторов не было.
А у меня был. Z80 мне как дом родной

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
https://msdn.microsoft.com/en-us/library/zkwh89ks.aspx
Это опять для экспортируемых функций.

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

Evgeny
04.03.2018
15:48:54
Да? https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx
The __stdcall calling convention is used to call Win32 API functions.

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

Страница 429 из 719