Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента? Например, tanh(3). Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 15:49 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
cucutnogВсем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента? Например, tanh(3). Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Знаете, вопрос, заданный дважды , в общем случае не приносит вдвое больше информации.AbstractionСтандарт C++ таких вещей не оговаривает. Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 16:05 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
cucutnogВсем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента? Например, tanh(3). Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3) Гипер-тангенс считается через частное от двух экспонент. А сама экспонента - инструкция математического модуля в процессоре (FPU). Сколько она операций делает - Х.З. но думаю что достаточно быстро чтобы мы этого вообще не замечали. Аппаратно. http://www.cyberforum.ru/assembler/thread186752.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 17:21 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
cucutnogВсем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента? Например, tanh(3). Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3)Компилятор mingw32 4.6.2. tanh(3) и exp(3) заменил константами на этапе компиляции, вычислять во время исполнения не стал. :) Если вместо аргумента использовать переменную, то для расчета, как я понял, используется функция tanh из msvcrt.dll. Код там достаточно большой и запутанный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 17:31 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
> Простейший способ - написать программу, скомпилировать, взять что-нибудь вроде IDA Pro и посмотреть, чего там скомпилировалось. Приятная новость для вас: в любом современном компиляторе можно включить генерацию ассемблерного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 18:15 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
tehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода. Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 19:39 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovtehKoshв любом современном компиляторе можно включить генерацию ассемблерного кода. Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ. Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код? Для одного и того же исходно кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 19:50 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
вне зависимостиИмеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код? Это было бы вполне логично. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 19:57 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
вне зависимостиDimitry Sibiryakovпропущено... Вот только это скорее всего будет абстрактный ассемблер, не зависящий от железного ЦПУ. Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код? Для одного и того же исходно кода. Да разный будет ассемблерный код. И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:00 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyИначе никакого смысла в ней нет. Насколько мне известно, классическая схема компиляции С четырёхпроходная: препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать собственный компилятор в дополнение к ассемблеру и линкеру. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:08 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНасколько мне известно, классическая схема компиляции С четырёхпроходная: препроцессор-компилятор-оптимизатор-ассемблер. Ну так на последней стадии создается либо машинный код, либо как в случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:14 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
cucutnogВсем добрый день! Если взять два числа A и B и сложить их, то процессор проделает одну операцию сложения,так? А сколько операций и каких проделает процессор, если я хочу взять гиперболический тангенс от аргумента? Например, tanh(3). Такой же вопрос про экспоненту в какой либо степени. Напрмиер, exp(3) Обычно в библиотеке существуют функции, вычисляющие значения таких функций за счет разложений в ряд. Элементы ряда вычисляются рекурсивно в цикле до тех пор, пока очередной член ряда не станет меньше, чем нужная погрешность вычисления. Какие конкретно ряды для каждой из этих функций я не знаю, это можно в справочнике расложений посмотреть. Т.е. с точки зрения оригинального вопроса — это вызов функции и цикл с несколькими операциями. Функция может быть встроенной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:18 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду. Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной компиляции, что подтверждает результат работы ключа "не удалять временные файлы". Хотя я могу и заблуждаться. Вопрос на засыпку: ассемблерные вставки в gcc пишутся на каком ассемблере? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:21 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyИначе никакого смысла в ней нет. Насколько мне известно, классическая схема компиляции С четырёхпроходная: препроцессор-компилятор-оптимизатор-ассемблер. Гораздо удобнее сконцентрировать платформо-зависимость в одном месте. Иначе пришлось бы для каждой платформы писать собственный компилятор в дополнение к ассемблеру и линкеру. А объектные(obj) файлы на какой стадии появляются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:26 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskyвне зависимостипропущено... Имеете ввиду что GCC вне зависимости от того на какой аппаратной платформе его используете, всегда будет показывать один и тот же ассемблерный код? Для одного и того же исходно кода. Да разный будет ассемблерный код. И вообще в этом и суть генерации ассеблерного кода - она должна показывать конкретные команды на конкретной платформе. Иначе никакого смысла в ней нет. По идее да. GCC есть под ARM, x86 и PowerPC, и часть ассемблерных команд одной архитектуры просто может не существовать на другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:29 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
вне зависимостичасть ассемблерных команд одной архитектуры просто может не существовать на другой. А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:31 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovAnatoly MoskovskyНу так на последней стадии создается либо машинный код, либо как в случае с опцией -S у gcc - ассемблерный листинг эквивалентный тому машинному коду. Звучит сомнительно если учесть, что ассемблерный файл генерируется и при обычной компиляции, что подтверждает результат работы ключа "не удалять временные файлы". Хорош уже тут фантазировать. Откройте любой ассемблерный листинг и увидите там такое: Код: plaintext 1. Это никак не может быть абстрактным ассемблером. Тут как минимум привязка к x86, а точнее к x86_64. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:38 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЭто никак не может быть абстрактным ассемблером. Тут как минимум привязка к x86, а точнее к x86_64. Не вижу в этой строчке ничего, что помешало бы ей скомпилироваться в пару инструкций "010455,177774". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 20:57 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Вы говорите про какие-то потенциальные возможности. А я вам говорю как оно есть в существующей на данный момент объективной реальности: опция -S (и ее аналоги в других мейнстримных компиляторах) генерируют код для конкретной платформы, а не абстрактный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 21:08 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Anatoly Moskovsky, Тише, горячие парни. Вы оба правы. GCC действительно сначала компилирует текст в IR (Intermediate Representation) . IR это нечто вроде абстрактного машинного кода для несуществующего процессора. На основе IR делается основная оптимизация кода. Потом запускается модуль конвертации из IR в машинный код целевой платформы. На этом этапе может быть второй этап оптимизации уже с учетом особенностей процессора. Ключ -S всегда выдает текст на языке ассемблера целевой платформы. Прямой доступ к IR (насколько я знаю) gcc не дает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 21:51 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
White Owl, Речь изначально шла только про -S. IR тут каким боком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2013, 22:18 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovвне зависимостичасть ассемблерных команд одной архитектуры просто может не существовать на другой. А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?.. Таки да. Ассемблер - это именно человекочитабельное представление машинного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 07:10 |
|
||
|
Функция гиперболического тангенса
|
|||
|---|---|---|---|
|
#18+
?Dimitry Sibiryakovпропущено... А Вы таки думаете, что ассемблерная команда должна компилироваться в машинный код 1:1?.. Таки да. Ассемблер - это именно человекочитабельное представление машинного кода.И будете не правы. Практически каждый из ассемблеров имеет команды являющиеся комбинацией из двух машинных. Например классический MIPS: la и lb. Одна команда в исходнике - две в маш-коде. Даже move reg1, reg2 в ассемблере присутствует, а в машинном коде отсутствует. Я уж не буду говорить о командах управляющих размещением кода и данных - это вообще не машинные кода а команды для компилятора и линкера, но тем не менее они являются необходимыми командами ассемблера. Но это все не тема для этого форума. Так что завязываем оффтопичить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2013, 18:12 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38217437&tid=2020305]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 156ms |

| 0 / 0 |
