Вопросы по теме 'x87'

Как указать немедленные числа с плавающей запятой с помощью встроенной сборки?
Когда я пытаюсь скомпилировать этот код: #include <stdio.h> main(int argc, char *argv[]) { double y = 0; __asm__ ("fldl $150;" "fsqrt;" "fstl %0;" : : "g" (y) ); printf("%f\n", y); return 0; } Я...
8196 просмотров
schedule 03.08.2023

Основные инструкции FPU/обзор стека?
Я пытаюсь получить общее представление об операциях с плавающей запятой на x86. Я понимаю, что у нас есть выделенный FPU со стеком, но я не нахожу много актуальной информации о том, как ведет себя стек с точки зрения различных инструкций. В...
544 просмотров
schedule 11.09.2022

Сборка 8086; Числа с плавающей запятой, сложение, вычитание
Мне нужны некоторые ресурсы, чтобы узнать больше о числах с плавающей запятой, мне нужно кодировать операции сложения и вычитания для таких чисел в emu8086 среда .... Любая помощь высоко ценится
9327 просмотров
schedule 17.03.2024

ошибка NASM с плавающей запятой
Работа над выполнением манипуляций со стеком с плавающей запятой: fld qword [perResult] ;load st0 with perimeter fsub qword [firstSide] ;take st0 and minus firstSide, st0= perimeter - firstSide fmul qword [perResult]...
774 просмотров
schedule 30.04.2023

Почему регистры Intel x87 имеют ширину 80 бит?
Почему используется такой «странный» размер регистра? Есть ли какая-либо документация о том, почему для этих регистров нежелательно использовать 64 или 128 бит?
1427 просмотров
schedule 20.12.2023

переключение fpu на одинарную точность
Я читал, что на более старых fpu за пару лет до fpu при переключении в режим одинарной точности деления и sqr делались в два раза быстрее, чем в обычном режиме. (проверьте источник http://stereopsis.com/FPU.html ) Это все еще так, и такое...
264 просмотров
schedule 22.04.2024

Разделение longfloat и int в сборке x86-64
У меня есть программа, в которой я зацикливаюсь, пока пользователь вводит Y (да). Затем пользователь вводит данные типа long float. У меня также есть счетчик r14, который будет считать каждый раз, когда они вводят длинное число с плавающей запятой....
176 просмотров
schedule 09.08.2022

Как использовать инструкции IA32 «fabs» в VS С++?
Это моя первая попытка использовать сборку, и я просто пытаюсь использовать инструкцию архитектуры Intel FABS . (Ссылка на данный документ на стр. 399). Это просто должно очистить бит знака. То немногое, что я знаю об ассемблере, касается...
801 просмотров
schedule 30.10.2022

В чем ошибка тригонометрических инструкций на x86?
Где я могу найти информацию о диапазонах ошибок для инструкций по тригонометрическим функциям на процессорах x86, например, fsincos ?
757 просмотров
schedule 15.12.2023

Двойная производительность намного быстрее, чем с плавающей запятой в C
Я пытался выяснить, будет ли использование чисел с плавающей запятой в каком-то коде на C достаточно точным для моих нужд, но после поиска и не совсем понимания того, как биты точности преобразуются в реальные числа, я решил просто написать немного...
201 просмотров
schedule 11.09.2022

Как декомпилировать этот расчет сборки x87?
Программа, которую я переворачиваю, выполняет простое умножение между числом с плавающей запятой и 8-байтовым целым числом: section .data va: dt 1.4426950408889634074 vb: dd 0x42424242 dd 0x41414141 section .text global main main: fld...
290 просмотров

Использование FPU со встроенной сборкой C
Я написал такую ​​векторную структуру: struct vector { float x1, x2, x3, x4; }; Затем я создал функцию, которая выполняет некоторые операции со встроенной сборкой, используя вектор: struct vector *adding(const struct vector v1[], const...
2373 просмотров
schedule 04.05.2022

Разделить число с плавающей запятой в любом из регистров st на целочисленную константу в ассемблере
Мне нужно разделить число с плавающей запятой, скажем, st0 на целое число (в этом примере 2): Итак, знайте, что я могу добиться этого просто: mov rax, 2 fild rax fdivp st1 но есть ли более элегантная и менее громоздкая версия (и я знаю, что...
276 просмотров
schedule 16.02.2023

Загрузка и хранение длинных двойников в x86-64
Сегодня заметил странную вещь. При копировании long double 1 все gcc , clang и icc генерируют инструкции fld и fstp с TBYTE операндами памяти. То есть следующая функция: void copy_prim(long double *dst, long double *src) {...
715 просмотров
schedule 02.07.2023

Влияют ли денормализованные флаги, такие как Denormals-Are-Zero (DAZ), на сравнение на равенство?
Если у меня есть 2 денормализованных числа с плавающей запятой с разными битовыми шаблонами и я сравниваю их на равенство, может ли на результат повлиять флаг Denormals-Are-Zero, флаг Flush-to-Zero или другие флаги на часто используемых процессорах?...
284 просмотров
schedule 20.07.2023

Перенос кода MASM5 в Quake 2 на GAS Неожиданные результаты рендеринга
Я переношу встроенный ассемблерный код Quake 2 для MSVC в MASM, а затем, наконец, в GAS (для использования с MinGW). Конкретный рассматриваемый код предназначен для рисования кожи (R_PolysetCalcGradients для тех, кто хочет его найти). Код почти...
73 просмотров
schedule 05.01.2023

Неправильный результат, загруженный из стека FPU после загрузки его со значением из массива
Я пишу встроенный ассемблерный код x86, чтобы скопировать содержимое массива, определенного на языке C , в стек x87 FPU для выполнения дальнейших операций. Значение, которое я сохраняю в верхней части стека FPU, отличается, когда я извлекаю его из...
173 просмотров
schedule 03.12.2022

Преобразование встроенной функции x87 fsqrt на ассемблере из C++ в C для x86-64
Я рассматривал различные методы вычисления квадратного корня, в частности один (sqrt14 из здесь ) привлек мое внимание, к сожалению, он был написан на C++ (он использует только ассемблер), мне сложно перевести его обратно на C - если это возможно....
126 просмотров
schedule 21.06.2022