Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция гиперболического тангенса / 24 сообщений из 24, страница 1 из 1
08.04.2013, 15:49
    #38217437
cucutnog
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Всем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

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

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)
...
Рейтинг: 0 / 0
08.04.2013, 16:05
    #38217476
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

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

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Знаете, вопрос, заданный дважды , в общем случае не приносит вдвое больше информации.AbstractionСтандарт C++ таких вещей не оговаривает.
Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось.
...
Рейтинг: 0 / 0
08.04.2013, 17:21
    #38217665
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

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

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)
Гипер-тангенс считается через частное от двух экспонент. А сама экспонента
- инструкция математического модуля в процессоре (FPU). Сколько она
операций делает - Х.З. но думаю что достаточно быстро чтобы мы этого
вообще не замечали. Аппаратно.

http://www.cyberforum.ru/assembler/thread186752.html
...
Рейтинг: 0 / 0
08.04.2013, 17:31
    #38217682
m_Sla
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
cucutnogВсем добрый день!
Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?
А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента?
Например, tanh(3).
Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Компилятор mingw32 4.6.2.
tanh(3) и exp(3) заменил константами на этапе компиляции, вычислять во время исполнения не стал. :)
Если вместо аргумента использовать переменную, то для расчета, как я понял, используется функция tanh из msvcrt.dll. Код там достаточно большой и запутанный.
...
Рейтинг: 0 / 0
08.04.2013, 18:15
    #38217783
tehKosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
> Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось.
Приятная новость для вас: в любом современном компиляторе можно включить генерацию ассемблерного кода.
...
Рейтинг: 0 / 0
08.04.2013, 19:39
    #38217861
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
tehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода.

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 19:50
    #38217871
Функция гиперболического тангенса
Dimitry SibiryakovtehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода.

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
...
Рейтинг: 0 / 0
08.04.2013, 19:57
    #38217876
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
вне зависимостиИмеете ввиду что GCC вне зависимости от того на какой аппаратной
платформе его используете, всегда будет показывать один и тот же ассемблерный код?

Это было бы вполне логично.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 20:00
    #38217882
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
вне зависимостиDimitry Sibiryakovпропущено...

Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ.

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
Да разный будет ассемблерный код.
И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет.
...
Рейтинг: 0 / 0
08.04.2013, 20:08
    #38217892
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Anatoly MoskovskyИначе никакого смысла в ней нет.
Насколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать
платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать
собственный компилятор в дополнение к ассемблеру и линкеру.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 20:14
    #38217898
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Dimitry SibiryakovНасколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер.

Ну так на последней стадии создается либо машинный код, либо как в случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.
...
Рейтинг: 0 / 0
08.04.2013, 20:18
    #38217904
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
cucutnogВсем добрый день!

Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так?

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

Например, tanh(3).

Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)

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

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

Т.е. с точки зрения оригинального вопроса — это вызов функции и цикл с несколькими операциями. Функция может быть встроенной.
...
Рейтинг: 0 / 0
08.04.2013, 20:21
    #38217908
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Anatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в
случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.

Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной
компиляции, что подтверждает результат работы ключа "не удалять временные файлы".

Хотя я могу и заблуждаться. Вопрос на засыпку: ассемблерные вставки в gcc пишутся на каком
ассемблере?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 20:26
    #38217916
Функция гиперболического тангенса
Dimitry SibiryakovAnatoly MoskovskyИначе никакого смысла в ней нет.
Насколько мне известно, классическая схема компиляции С четырёхпроходная:
препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать
платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать
собственный компилятор в дополнение к ассемблеру и линкеру.

А объектные(obj) файлы на какой стадии появляются?
...
Рейтинг: 0 / 0
08.04.2013, 20:29
    #38217919
Функция гиперболического тангенса
Anatoly Moskovskyвне зависимостипропущено...

Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код?
Для одного и того же исходно кода.
Да разный будет ассемблерный код.
И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет.
По идее да. GCC есть под ARM, x86 и PowerPC, и часть ассемблерных команд одной архитектуры просто может не существовать на другой.
...
Рейтинг: 0 / 0
08.04.2013, 20:31
    #38217920
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
вне зависимостичасть ассемблерных команд одной архитектуры просто может не
существовать на другой.
А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 20:38
    #38217927
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Dimitry SibiryakovAnatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в
случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду.

Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной
компиляции, что подтверждает результат работы ключа "не удалять временные файлы".

Хорош уже тут фантазировать.
Откройте любой ассемблерный листинг и увидите там такое:
Код: plaintext
1.
movl    %edi, -4(%rbp)


Это никак не может быть абстрактным ассемблером.
Тут как минимум привязка к x86, а точнее к x86_64.
...
Рейтинг: 0 / 0
08.04.2013, 20:57
    #38217941
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Anatoly MoskovskyЭто никак не может быть абстрактным ассемблером.
Тут как минимум привязка к x86, а точнее к x86_64.
Не вижу в этой строчке ничего, что помешало бы ей скомпилироваться в пару инструкций
"010455,177774".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2013, 21:08
    #38217949
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Dimitry Sibiryakov,

Вы говорите про какие-то потенциальные возможности.
А я вам говорю как оно есть в существующей на данный момент объективной реальности: опция -S (и ее аналоги в других мейнстримных компиляторах) генерируют код для конкретной платформы, а не абстрактный.
...
Рейтинг: 0 / 0
08.04.2013, 21:51
    #38217967
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Dimitry Sibiryakov,
Anatoly Moskovsky,

Тише, горячие парни. Вы оба правы.
GCC действительно сначала компилирует текст в IR (Intermediate Representation) .
IR это нечто вроде абстрактного машинного кода для несуществующего процессора. На основе IR делается основная оптимизация кода.
Потом запускается модуль конвертации из IR в машинный код целевой платформы. На этом этапе может быть второй этап оптимизации уже с учетом особенностей процессора.

Ключ -S всегда выдает текст на языке ассемблера целевой платформы.
Прямой доступ к IR (насколько я знаю) gcc не дает.
...
Рейтинг: 0 / 0
08.04.2013, 22:18
    #38217983
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
White Owl,

Речь изначально шла только про -S.
IR тут каким боком?
...
Рейтинг: 0 / 0
09.04.2013, 07:10
    #38218103
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Dimitry Sibiryakovвне зависимостичасть ассемблерных команд одной архитектуры просто может не
существовать на другой.
А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Таки да. Ассемблер - это именно человекочитабельное представление машинного кода.
...
Рейтинг: 0 / 0
09.04.2013, 18:12
    #38219311
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
?Dimitry Sibiryakovпропущено...

А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?..
Таки да. Ассемблер - это именно человекочитабельное представление машинного кода.И будете не правы.
Практически каждый из ассемблеров имеет команды являющиеся комбинацией из двух машинных.
Например классический MIPS: la и lb. Одна команда в исходнике - две в маш-коде.
Даже move reg1, reg2 в ассемблере присутствует, а в машинном коде отсутствует.
Я уж не буду говорить о командах управляющих размещением кода и данных - это вообще не машинные кода а команды для компилятора и линкера, но тем не менее они являются необходимыми командами ассемблера.

Но это все не тема для этого форума. Так что завязываем оффтопичить.
...
Рейтинг: 0 / 0
09.04.2013, 20:07
    #38219431
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция гиперболического тангенса
Жаль что автор не очень ценит наше внимание.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Функция гиперболического тангенса / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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