Вопросы по теме '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 просмотров
schedule
03.11.2022
Использование 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