@dlangru

Страница 428 из 719
Evgeny
04.03.2018
13:38:25
Откуды ты вообще взял вот это "Первые 6 - через регистры, остальные через стек"?

Dark
04.03.2018
13:39:27
Там вроде это прописано

Evgeny
04.03.2018
13:40:03
Я про С говорил тогда вообще то
Окай, откуда ты взял что в C "Первые 6 - через регистры, остальные через стек"?

Google
Evgeny
04.03.2018
13:40:27
Pavel
04.03.2018
13:40:41
"Соглашение о вызовах fastcall не стандартизировано, поэтому используется только для вызова процедур и функций, не экспортируемых из исполняемого модуля и не импортируемых извне."

Dark
04.03.2018
13:40:47
Ступил

Evgeny
04.03.2018
13:42:06
Для неэкспортируюмых функций компилятор может задействовать все что ему захочется. Оно не стандартизировано вообще никак.

Pavel
04.03.2018
13:42:35
не может

Evgeny
04.03.2018
13:43:46
не может
ну там есть несколько ограничений для платформы x86

Pavel
04.03.2018
13:43:57
Всё явно, через соглашения, ключи и директивы компиляции.

Evgeny
04.03.2018
13:44:00
а так кто ему (компилятору) запретит?

Dark
04.03.2018
13:44:33
а так кто ему (компилятору) запретит?
А кому нужен непредсказуемый компилятор?

Evgeny
04.03.2018
13:45:48
А кому нужен непредсказуемый компилятор?
А зачем предсказуемость там где она не нужна? Тебя же не парит, что компилятор может оптимизировать непредсказуемо вплоть до "инлайнирования" функции?

Pavel
04.03.2018
13:46:07
Господа я тут делаю сайт dlang, кто бы что хотел на нем видеть?

Dark
04.03.2018
13:46:42
Pavel
04.03.2018
13:46:49
Любое

Google
Pavel
04.03.2018
13:47:10
А то будет только главная страница со ссылкой на dlang.org =)

Evgeny
04.03.2018
13:47:54
Всё явно, через соглашения, ключи и директивы компиляции.
Где эти соглашения, ключи, директивы для D? На странице ABI описываются соглашения только для экспортируемых функций.

Dark
04.03.2018
13:48:21
Ладно, вроде твоя взяла xDD

Любое
Конкретизируй хоть

Pavel
04.03.2018
13:49:05
Какие разделы и инфу вы хотите видеть на сайте русскоязычного сообщества

Dark
04.03.2018
13:50:57
Какие разделы и инфу вы хотите видеть на сайте русскоязычного сообщества
Перевод доки, книги, полезные модули. Парочка туториалов.

Pavel
04.03.2018
13:51:13
полезные модули это что?

Dark
04.03.2018
13:51:57
Модули не стандартной библиотеки для решения частых проблем

Pavel
04.03.2018
13:52:06
А, понял

Dark
04.03.2018
13:52:27
Насчет разделов я хз

Ты там форум делаешь, что ли?

Evgeny
04.03.2018
13:52:39
На сайтах компиляторов.
Вот именно, что компиляторов, а не языков. То бишь "Для неэкспортируюмых функций компилятор может задействовать все что ему захочется. Оно не стандартизировано вообще никак."

Evgeny
04.03.2018
13:54:29
Оно определено для компилятора, а не языка.
Ну тогда я не понимаю что тебе не понравилось в моей фразе? Я сказал ровно тоже самое. Очевидно, что компилятору "хочется" ровно то, что в него заложили разработчики.

Pavel
04.03.2018
13:55:14
Компилятор ведёт себе детерминировано и самовольно менять формат вызова не будет.

Evgeny
04.03.2018
13:55:46
Pavel
04.03.2018
13:56:11
Вот это больше мне хотелось бы узнать)

Evgeny
04.03.2018
13:56:27
Вот это больше мне хотелось бы узнать)
Ну ты же применил это слово, не я. :)

Google
Evgeny
04.03.2018
13:57:37
Где тут "самовольность"?

Pavel
04.03.2018
13:57:48
По смыслу

Evgeny
04.03.2018
13:58:07
Повторю еще раз: "Очевидно, что компилятору "хочется" ровно то, что в него заложили разработчики."

И кстати совершенно не обязательно, что это будет подробно расписано и задокументировано на сайте компилятора.

Ну или если ты чисто придраться к словам решил. Перефразирую: "Для неэкспортируюмых функций разработчики компилятора могут задействовать все что им захочется. Оно не стандартизировано вообще никак."

Так пойдет?

Pavel
04.03.2018
14:00:23
Нет. Так не бывает.

А если будет, компилятором не будут пользоваться.

Dark
04.03.2018
14:01:03
Нет. Так не бывает.
"В теории, теория и практика не разделимы. На практике это не так"

Evgeny
04.03.2018
14:01:16
"Не будут пользоваться" и "не бывает" - это совершенно разные вещи.

Pavel
04.03.2018
14:01:49
Если брать в расчет наколенные самоделки...

Evgeny
04.03.2018
14:03:10
Если брать в расчет наколенные самоделки...
Интересно, где прочитать про ключи, соглашения и прочее для dmd?

Pavel
04.03.2018
14:03:31
в документации

Evgeny
04.03.2018
14:03:40
ссылку, пожалуйста

Заодно можно поискать и для любого другого компилятора. Например GCC

Dark
04.03.2018
14:07:20
https://gcc.gnu.org/onlinedocs/ Это для GCC

Evgeny
04.03.2018
14:07:49
https://gcc.gnu.org/onlinedocs/ Это для GCC
ну ты бы еще просто написал бы - "в интернете" :D

Dark
04.03.2018
14:08:14
А что не так?

Нужно обязательно написать на бумажке?

Evgeny
04.03.2018
14:09:06
А что не так?
Ну как бы "Интересно, где прочитать про ключи, соглашения и прочее для dmd?" "Заодно можно поискать и для любого другого компилятора. Например GCC"

Google
Evgeny
04.03.2018
14:09:45
Ты мне дал ссылку где можно прочитать про ключи, соглашения описывающие внутренние calling convention для gcc?

Dark
04.03.2018
14:12:16
Неа. Я дал ссылку на документацию, в которой, по мнению Павла, это все должно быть описано

Evgeny
04.03.2018
14:13:18
Неа. Я дал ссылку на документацию, в которой, по мнению Павла, это все должно быть описано
Ну я думаю, он и сам знает где искать. Правда, подозреваю, что он ничего не найдет. Ни для dmd, ни для gcc, ни для ldc.

Dark
04.03.2018
14:13:30
Вот для GCC нет

Evgeny
04.03.2018
14:13:54
Вот для GCC нет
То есть ты считаешь, что оно таки где-то там внутри описано?

Dark
04.03.2018
14:13:55
Но тогда почему все предсказуемо в cdecl - непонятно

Evgeny
04.03.2018
14:14:17
cdecl - это соглашения для экспортируемых функций.

Dark
04.03.2018
14:14:18
Не благодари

Evgeny
04.03.2018
14:14:49
Не благодари
Спасибо. :)

Ну а если задуматься зачем искусственно ограничивать компилятор? По мне так если он может для передачи параметров задействовать все 40 регистров какого-нибудь супер-процессора, то почему бы ему это и не сделать?

Dark
04.03.2018
14:17:07
Для экспортируемх ему это как раз нельзя будет сделать

Evgeny
04.03.2018
14:17:42
Для экспортируемх ему это как раз нельзя будет сделать
Я про неэкспортируемые. Мы тут вроде про них толкуем. С экспортируемыми все ясно, разногласий нет.

Dark
04.03.2018
14:18:55
А почему он не может это сделать по-дефолту?

Evgeny
04.03.2018
14:19:52
Павел вернулся. Нашел доки? Или таки dmd - наколенная самоделка? Ну и ldc, gcc, clang тоже с ними заодно.

Pavel
04.03.2018
14:20:28
я ине искал

Evgeny
04.03.2018
14:20:28
Можно, только нужно ключи задать.
даешь тыщщи ключей, причем для каждой платформы свои.

Pavel
04.03.2018
14:20:37
естественно

и все описаны

Google
Evgeny
04.03.2018
14:20:55
я ине искал
правильно сделал, потому что их нет :)

Pavel
04.03.2018
14:21:03
есть

Evgeny
04.03.2018
14:21:21
есть
голословные заявления?

Pavel
04.03.2018
14:21:52
пока они от тебя

Evgeny
04.03.2018
14:22:24
обязательства доказательства наличия чего-либо ложатся на того кто утверждает это наличие.

Dark
04.03.2018
14:22:53
даешь тыщщи ключей, причем для каждой платформы свои.
Тыщщи ключей для каждой платформы и так есть :) Но это не отменяет общих ключей, конечно

Pavel
04.03.2018
14:23:30
нично не отменяет детерминированного поведения компиляторов.

Dark
04.03.2018
14:23:52
настолько подробных нет
Подробность - понятие субъективное. Так что эту ветку закроем

Evgeny
04.03.2018
14:25:00
Подробность - понятие субъективное. Так что эту ветку закроем
нет мне реально интересно, написано ли где-нибудь, что dmd передает аргументы вот именно так, а если дать такой-то ключ, то как-то иначе, или таки Павел просто сотрясает воздух?

Dark
04.03.2018
14:25:49
нично не отменяет детерминированного поведения компиляторов.
Но ничто их не обязывает. Вот например в доках нет ключа, регулирующего внутреннее соглашение об вызовах

Pavel
04.03.2018
14:27:11
https://dlang.org/spec/abi.html#function_calling_conventions

Evgeny
04.03.2018
14:27:52
https://dlang.org/spec/abi.html#function_calling_conventions
Это не для dmd, а для языка D в целом. И это касается только экспортируемых функций.

Pavel
04.03.2018
14:28:50
Я и не говорил о ключах, задающих следование какому-либо стандарту вызова. Имелись в виду ключи оптимизации, следования стандартам вообще и тому подобные.

Dark
04.03.2018
14:28:54
нет мне реально интересно, написано ли где-нибудь, что dmd передает аргументы вот именно так, а если дать такой-то ключ, то как-то иначе, или таки Павел просто сотрясает воздух?
Для DMD - нет (ну если не считать сорцы) Для GCC - тоже. Но с другой стороны, ожидаемое поведение есть, просто ничто не обязывает (кроме совести, но у разработчикв может ее и не быть)

Evgeny
04.03.2018
14:29:37
Pavel
04.03.2018
14:31:07
что именно?
Что касается экспорта, а что нет.

Evgeny
04.03.2018
14:31:50
Что касается экспорта, а что нет.
что именно касается "не экспорта"?

Там все касаетс экспорта вообще-то.

Pavel
04.03.2018
14:32:05
gcc - вообще не единый компилятор.

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