NoneX 87 - это устаревшее 80-битное подмножество с плавающей запятой в наборе инструкций x86. Он устарел SSE/SSE2 для float/double, но все еще полезен для 80-битной расширенной точности. 32-битный x86 ABI также возвращает результаты FP в регистре x87. См. Вики-теги для получения ссылки на руководство.
1 ответ

Почему толкание двойного стека с помощью двух 32-битных толчков может быть намного медленнее, чем его использование с помощью инструкций с плавающей запятой (fldl & fstpl)?

Вот небольшой фрагмент ассемблерного кода (я использую синтаксис ассемблера gnu). .extern cos .section .data pi: .double 3.14 .section .text .global slowcos .global fastcos fastcos: fldl pi subl $8, %esp # makes some space for a double on the stack …
07 сен '15 в 20:08
1 ответ

FMUL не очищает переполнение в регистре STATUS

У меня есть этот код Win32: fld x fmul y fstsw ax Кажется, что fmul не очищает бит регистров состояния FPU, т.е. если переполнение уже было установлено (ax & 8) тогда он останется установленным после fmul, Это правильное поведение? Требуется ли очис…
19 мар '13 в 09:31
1 ответ

Использование FFREE и FDECSTP

Я не могу понять это: для чего нужны такие команды (FFREE, FDECSTP)? Может ли он использовать для выталкивания значения из стека fpu, или это для какой-то другой цели? Я не понимаю:/ Может кто-то объяснить это, TNX
11 ноя '12 в 20:58
0 ответов

Почему FXSAVE в Intel хранит сокращенные теги x87

Инструкция FXSAVE IA32 не сохраняет собственные двухбитовые теги x87 в байт FTW области сохранения. Вместо этого "сокращенные метки" сохраняются однобитные инвертированные метки. Т.е. (00, 01, 10) -> 1, 11 -> 0 для полного-> сокращенного перевода. Я…
24 июн '17 в 11:14
1 ответ

Сборка - номер из стека

Это часть моего кода: .data .text .global fx fx: pushl %ebp movl %esp,%ebp finit fldl 8(%ebp) Я вызываю эту функцию из C. Поскольку 8 байт должны иметь значение, которое я вызвал, я прав? Но то, что я вижу в GDB: (gdb) info float =>R7: Valid 0x3b…
25 май '15 в 22:01
4 ответа

FSTENV? Едва ли можно найти какую-либо информацию об этой инструкции

У меня есть эта инструкция в программе: FSTENV (28-BYTE) PTR SS:[ESP-1C] Что оно делает? Какие регистры он использует и обновляет? Спасибо!
26 апр '12 в 16:43
1 ответ

Проблема с командами сопроцессора (я хотел бы нарисовать кривую f(x)=x*sin(1/x) в графическом режиме)

Я новичок в программировании сборки. Я хотел бы нарисовать кривую f(x)=x*sin(1/x) в графическом режиме. Я могу нарисовать кривую f (x) = sin (x), но я не могу нарисовать f(x)=x*sin(1/x). Как я мог это сделать? Ниже вы можете увидеть мой рабочий код …
20 янв '13 в 22:23
0 ответов

Вычислительные мощности в x87 с плавающей точкой

Есть ли способ вычислить степени чисел с плавающей запятой чисто в сборке x86/x87? Я не говорю о вычислении интегральных степеней чисел с плавающей точкой, но что-то вроде x^y, где x и y - числа с плавающей точкой. У меня есть решение для интегральн…
29 авг '15 в 19:54
2 ответа

Сигнализация NaN была повреждена при возврате из функции x86 (flds/fstps из x87)

У меня странное поведение с x86 (32-разрядной) Linux Linux GCC. Я генерирую сигнализацию NaN, используя встроенную в GCC __builtin_nansf(""), который генерирует 0x7fa00000. После возвращения этого значения из функции в виде числа с плавающей запятой…
02 апр '14 в 15:24
1 ответ

Преобразуйте этот встроенный ассемблерный код в работу с gcc.

Я пытаюсь преобразовать этот кусок кода для работы со сборкой AT&T;, которую использует g++: double sqrt13(double n) { __asm{ fld n fsqrt } } На основании этой ссылки: https://ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html: я пробовал это: dou…
07 дек '18 в 21:14
1 ответ

Как воспроизвести с плавающей точкой cos(x)!= Cos (x)

Как воспроизвести это поведение? https://isocpp.org/wiki/faq/newbie Чтобы быть точным, в следующем коде параметры x а также y равны; они могут быть равны 1,0 или любому другому значению. void foo(double x, double y) { double cos_x = cos(x); double c…
11 июн '15 в 16:30
2 ответа

Вызов инструкции fsincos в LLVM медленнее, чем вызов функций libc sin/cos?

Я работаю над языком, который компилируется с LLVM. Ради интереса я хотел сделать несколько микробенчмарков. В одном из них я запускаю несколько миллионов вычислений sin / cos в цикле. В псевдокоде это выглядит так: var x: Double = 0.0 for (i <- …
18 сен '12 в 21:18
0 ответов

Сравнение в x87 FPU

Я работаю над проектом MASM32, используя набор команд x87. Я хочу сравнить два числа с плавающей запятой и распечатать сообщение о результате сравнения. Моя программа: .386 .model flat, stdcall option casemap :none include \masm32\include\windows.in…
03 ноя '17 в 19:13
0 ответов

Сборка x86 x87 Numeric Proccesor

Я пытаюсь написать цикл в сборке, которая эквивалентна: for(i=0; x1 + i*h <= x2; i++) И каждый раз, когда я вызываю другую функцию, которая использует (x1 + i*h) в качестве одного из своих параметров, по какой-то причине она получает ее с добавл…
01 фев '19 в 14:06
1 ответ

Стек x87 FP все еще актуален?

Я заметил, что компиляторы генерируют код, который нацелен на регистры SIMD каждый раз double арифметика используется. Это относится как к неоптимизированному, так и к оптимизированному коду. Означает ли это, что модуль x87 FP можно считать устаревш…
09 окт '14 в 13:51
1 ответ

Добавить 32-битные числа с плавающей запятой в регистры eax/ecx?

У меня есть пара 32-битных чисел, хранящихся в eax и ecx. Могу ли я напрямую загрузить их в FPU для работы с ними без предварительного сохранения в памяти? Это значительно упростит некоторый код компилятора, но fld Кажется, может работать только с п…
24 ноя '14 в 03:09
1 ответ

Пример инструкции FXTRACT

Я написал этот код в NASM: section .data fvar: dd 123.456 fsig: dq 0.0 fexp: dq 0.0 section .text fld dword[fVar] fxtract ; put significand in ST(0), and exponent in ST(1) fstp qword[fsig] ; fsig = 1.929 fstp qword[fexp] ; fexp = 6 Я ждал, чтобы най…
15 июн '17 в 15:56
2 ответа

Заменили ли потоковые SIMD-расширения набор команд x87?

Я знаю, что SSE являются альтернативой инструкции с плавающей запятой x87, но все же реализован FPU x87 в современных процессорах, таких как Ivy-Bridge или Haswell? Заменили ли SSE набор команд x87?
06 май '13 в 19:50
2 ответа

Инструкция FYL2XP1

Мне интересно, почему инструкция FYL2XP1 на архитектуре x86 вычисляет именно математическую формулу y · log2(x + 1). Что особенного в этой формуле?
1 ответ

Инструкции x87 FPOP и FCOM - как они работают?

Мне было поручено написать простое приложение на смешанном C/ASM, в котором должен использоваться математический сопроцессор. Функциональный цилиндр (с плавающей точкой x, с плавающей точкой y, с плавающей точкой z) возвращает 1, если заданная точка…
25 авг '11 в 18:37