코드 : VS2012가 컴파일 기본 설정에 double Ret_Value=0;
가 : 101102AC fldz
101102AE lea eax,[Ret_Value]
101102B1 push eax
101102B2 fstp qword ptr [Ret_Value]
편집 : SSE2 프로젝트 설정에서 비활성화 된 경우 10112128 xorps
16 비트 타겟 용 GNU C++ 컴파일러 인 Sourcery IA16 compiler을 다운로드했으며 작동합니다 (멀리 포인터를 지원하지는 않지만 인라인 asm 레지스터 할당과 관련된 결함이 있지만). 내가 몇 가지 컴파일러 옵션을 추가해야한다, 그림에서 보듯이 /tmp/ccBB3kEN.o: In function `foo()':
(.text+0x38):
에 두 숫자를 비교하여 나는 다음과 같은 어셈블리 코드가 있습니다 %include 'rw32.inc'
[segment .data use32]
a dd 2.0
b dd 1.0
[segment .code use32]
prologue ; macro -- inicialization
fld dword [a]
fld dword [
Win32 플랫폼의 Delphi 응용 프로그램에서 FPU Control Word에서 무슨 일이 일어나는지 이해해 주시겠습니까? 새 VCL 응용 프로그램을 만들 때 제어 단어는 1372h로 설정됩니다. 이것이 내가 이해할 수없는 첫 번째 이유입니다. 이유는 1332h가 1330h가 아니고 Default8087CW이 System 단위로 정의 된 것입니다. 두
mxcsr 제어 레지스터에 비트를 설정하려고합니다. gcc (fesetenv)로이 작업을 수행하는 방법을 알고 있지만이 MSVC를 사용할 수 없었습니다. 내가 고려한 가능성은 다음과 같습니다. MSVC x64에서는 인라인으로 지원되지 않습니다. _controlfp 기능이 1 대 1과 일치하지 않는 것으로 보입니다 (이 기능을 완전히 오해하고있을 수도 있지만
가 다음 코드 조각을 등록하여 분할 : 나는 그것을 컴파일하려고하면 void calculate(int int_number) {
__asm {
fld1
mov eax, 5
fidiv eax ; A
}
}
의 선은 error C2415: improper operand type와 함께 실패합니다. eax을
저는 6 비트에서 8 비트의 32 비트 정수를 32 비트 실수로 변환해야하는 경우가 종종 있습니다. 필자는 델파이 코드를 사용자 정의 어셈블러 코드로 대체했으며 FPU 변환은 항상 빠르며 일부 컴퓨터에서는 SSE 변환보다 빠릅니다. 변환하는 동안 스케일링 (그래서 곱셈)이있을 필요가 program Project1;
{$R *.res}
uses
wi
Cortex-M4 기반의 프로세서 인 libgcc의 부동 소수점 구현에는 FPU가 없다. 대신 -lgcc 스위치를 사용 libgcc.o로 라이브러리에 내장 사용, 난 내 응용 프로그램에서 소수점 연산 기능을 부동의 소스 코드 구현을 사용하려면 대신 라이브러리의 전체를 추가하는 내 응용 프로그램에 필요한 기능으로 만 사용할 . 따라서 어느 누구도 이러한 기능
학문적 이유로 AArch64에서 sqrt 함수의 성능을 사용하고 있습니다. 단일 플로트 sqrtf 기능 코드 : 더블 플로트 SQRT에 대한 fsqrt s0, s0
ret
코드 기능 : 여기에서 FSQRT에 대한 이론적 대기 시간을 말하는 겁니다 fsqrt d0, d0
ret
: http://infocenter.arm.com/help/topic/
소년, StackOverflow에서이 녀석들이 실제로이 질문을하기 전에 생각해 봅니다.이 첫 번째 질문을 쓰는 실제 무대 공포증이 있습니다. 검색하는 동안 찾은 자료를 제공 하겠지만 먼저 주제 자체에 대해 자세히 설명해 드리겠습니다. 즉, 나는 Floating Point Unit의 연구에 관심이 있습니다. 그러므로, 사용 가능한 오픈 소스 하드웨어 구현을보