powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012: Как посмотреть реализацию функции sin(x)?
25 сообщений из 68, страница 1 из 3
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092634
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если написать код:

Код: plaintext
1.
double a = std::sin(0.2);



и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке...

В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты.

Вспоможите!
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092665
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVМожно только дизассемблированный код посмотреть на этой страничке...

А его недостаточно? Вычисление синуса - одна ассемблерная команда.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092691
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovGermanVМожно только дизассемблированный код посмотреть на этой страничке...

А его недостаточно? Вычисление синуса - одна ассемблерная команда.



Интересен вопрос: какой ценой собственно достигается многопоточность? А насчет одна команда- не согласен: даже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092704
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVдаже в этом случае приведенный мной код не является атомарной операцией, и
при многопоточности значение может вычисляться не корректно.
Не может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный
стэк и набор регистров.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092707
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVDimitry Sibiryakovпропущено...

А его недостаточно? Вычисление синуса - одна ассемблерная команда.



Интересен вопрос: какой ценой собственно достигается многопоточность? А насчет одна команда- не согласен: даже в этом случае приведенный мной код не является атомарной операцией, и при многопоточности значение может вычисляться не корректно.
Каждый поток имеет свой стек операций. Стеки не пересекаются.
Для вычисления FSIN процессор переключается в режим FPU
и очень быстро за несколько тактов вычисляет значение синуса.
Никакой особой синхронизации здесь не нужно так же как и не нужно
синхронизировать АЛУ процессора для сложений и вычитаний.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092732
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovНе может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный
стэк и набор регистров.


Тогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Ведь они и так разделены!
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092733
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVТогда зачем компилятор призывает использовать "безопасные" функции CRT с
окончанием _s?
Кроме стэка и регистров есть ещё куча прочей памяти.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092762
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти.


Вот и я про тоже! А вдруг эти товарищи видоизменяют реализацию наших любимых функций для придания им многопоточности. Причем нам ничего не говорят и окончание _s не добавляют (из разряда "А мужики-то не знают!").

Хочется понять как они свою многопоточность реализовали для всех библиотек CRT.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092764
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти.
есть ещё TLS, но зачем это всё для вычисления синуса?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092766
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVА вдруг эти товарищи видоизменяют реализацию наших любимых функций

Откуда у человека, изучающего С всего неделю вдруг завелись "любимые функции"?..
И, кстати, какой это компилятор предлагает потокобезопасный синус?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092772
GermanVDimitry SibiryakovКроме стэка и регистров есть ещё куча прочей памяти.


Вот и я про тоже! А вдруг эти товарищи видоизменяют реализацию наших любимых функций для придания им многопоточности. Причем нам ничего не говорят и окончание _s не добавляют (из разряда "А мужики-то не знают!").

Хочется понять как они свою многопоточность реализовали для всех библиотек CRT.
Синхронизация нужна при обращении по одному и тому же адресу памяти. Зачем это в синусе?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092775
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVТогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s?
Для защиты от различных атак. Например buffer overflow. Никакой связи с многопоточностью здесь нет.

Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries
Security Features in the CRT
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092806
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVЕсли написать код:
Код: plaintext
1.
double a = std::sin(0.2);


и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке...
В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты.
Вспоможите! sin(0.2) - это константа, компилятор его может смело заменить на
Код: plaintext
1.
double a = 0,1986693;


и функции синуса ты вообще не найдешь.
Можно попробовать с переменной. Или выложи дизассемблированный код посмотреть.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092811
Надо так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m_SlaGermanVЕсли написать код:
Код: plaintext
1.
double a = std::sin(0.2);


и с помощью F11 попытаться "провалиться" в функцию sin, то получаем страничку "Нет доступных исходных файлов". Можно только дизассемблированный код посмотреть на этой страничке...
В целом я хочу понять как стандартные библиотеки CRT (на примере sin(x)) реализуют поддержку многопоточности. Читал на каком-то форуме, что эти библиотеки даже у Микрософта открыты.
Вспоможите! sin(0.2) - это константа, компилятор его может смело заменить на
Код: plaintext
1.
double a = 0,1986693;


и функции синуса ты вообще не найдешь.
Можно попробовать с переменной. Или выложи дизассемблированный код посмотреть.
Надо так:
Код: plaintext
1.
2.
volatile doulbe b = 0.2;
double a = std::sin(b);
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092957
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m_Slasin(0.2) - это константа, компилятор его может смело заменить на
Код: plaintext
1.
double a = 0,1986693;



sin(0.2) - это НЕ константа.
Вообще никто не гаратирует что вызовется именно библиотечная функция sin.
Если предоставить свою реализацию, то линкер выкинет библиотечную и свяжет с пользовательской, и вызовется именно она, и далеко не факт что она не имеет какого-то глобального состояния в рантайме.
А значит компилятор не имеет права вычислять это выражение в момент компиляции.

Вот в С++11 сделали возможность объявить функцию constexpr (не любую правда) и вот вызов такой функции от константных аргументов компилятор уже обязан вычислить при компиляции.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38092990
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по одному и тому же адресуСинхронизация нужна при обращении по одному и тому же адресу памяти. Зачем это в синусе?

Ну что вы к этому синусу привязались? Функций в стандартных библиотеках много, и все они не реализованы аппаратно на ЦП. Однако все они многопоточные.

Вы можете ответить на простой вопрос: какой основной принцип переделки функций CRT в многопоточный вариант?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093011
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVкакой основной принцип переделки функций CRT в многопоточный вариант?\
переделке подлежат функции, использующие общие данные процесса.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093105
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanV,

Можно поставить исходники CRT, когда ставишь студию. Правда я сам последние студии не ставил, но традиционно такая возможность всегда была.


А многопоточность - все просто, для этого не надо читать что-то. Функции в CRT либо повторновходовые, либо нет. Для последних либо делаются мьютексы для сериализации вызовов, либо контекст хранится в thread local storage.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093112
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanV

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

Синус — повторновходовая функция. Проблем вообще никаких не должно быть.
Сравни например с strtok.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093120
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVDimitry SibiryakovНе может. С чего бы ему выполняться некорректно-то?.. Каждый поток имеет свой собственный
стэк и набор регистров.


Тогда зачем компилятор призывает использовать "безопасные" функции CRT с окончанием _s? Ведь они и так разделены!

_s — это совсем из другой оперы, это не про многопоточность.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093187
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src

если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093190
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazileДля защиты от различных атак. Например buffer overflow. Никакой связи с многопоточностью здесь нет.

Repel Attacks on Your Code with the Visual Studio 2005 Safe C and C++ Libraries
Security Features in the CRT



А можно какую- нибудь книжку посоветовать о методах программирования, позволяющих защитить свой код от уязвимостей? Я вот в кучах создаю огромные массивы и боюсь переполнений (эти ошибки очень трудно отследить). Может создать какие-то дополнительные проверочные процедуры анализа стека на входе/выходе из функций кода и тд.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093200
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapokскачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src

если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете.

Я не использую Линукс из-за низкого качества поддержки. По сути вся поддержка этих систем сводится к древним форумам, где пара троллей глумится над новичками, воображая себя отцами учителями.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093211
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилпеределке подлежат функции, использующие общие данные процесса.

Можно подробнее? Вводится ли новая функция или заменяется старая? Как это отражается на производительности? Какой-нибудь пример есть?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093216
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVchabapokскачать исходники libc и libstdc++, и там эти функции должны быть. Например так http://lmgtfy.com/?q=libstdc%2B%2B+src

если хочется посмотреть не то, как оно было в исхрдниках, а то. во что оно превратилось после компиляции, то статически линкуетесь с либами и утилитой objdump дизасеемблируете.

Я не использую Линукс из-за низкого качества поддержки. По сути вся поддержка этих систем сводится к древним форумам, где пара троллей глумится над новичками, воображая себя отцами учителями.
Я-бы себе прикупил хороший коммерческий линукс для десктопа при условии
что будет телефонная линия поддержки и нормальная служба говорящая
на местном языке. Но где в нашей стране (Украине) найти подобное?
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012: Как посмотреть реализацию функции sin(x)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]