<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://paz00.ru/index.php?action=history&amp;feed=atom&amp;title=Hard_and_soft_float</id>
	<title>Hard and soft float - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://paz00.ru/index.php?action=history&amp;feed=atom&amp;title=Hard_and_soft_float"/>
	<link rel="alternate" type="text/html" href="https://paz00.ru/index.php?title=Hard_and_soft_float&amp;action=history"/>
	<updated>2026-04-30T13:15:38Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://paz00.ru/index.php?title=Hard_and_soft_float&amp;diff=66&amp;oldid=prev</id>
		<title>Unknown user в 08:13, 15 октября 2014</title>
		<link rel="alternate" type="text/html" href="https://paz00.ru/index.php?title=Hard_and_soft_float&amp;diff=66&amp;oldid=prev"/>
		<updated>2014-10-15T08:13:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Hard float and soft float, в чем разница?= &lt;br /&gt;
&lt;br /&gt;
В составе многих современных процессоров существует '''[http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%81%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80 модуль операций с плавающей запятой]''' ( или '''с плавающей точкой'''; англ. ''floating point unit (FPU)'') — часть процессора для выполнения широкого спектра математических операций над вещественными числами. Если на этапе компиляции программы указать компилятору, что у процессора, под который собирается программа, есть FPU, то программа сможет использовать его напрямую, что положительно сказывается на производительности. Это называется сборкой под Hard float. Так же существуют процессоры, у которых такой блок отсутствует, потому программы скомпилированные с использованием инструкций FPU на них работать не будут. Чтобы программа работала на любых процессорах, вне зависимости от наличия в них FPU, необходимо запретить компилятору использовать инструкции FPU для сборки программы, даже если он есть. Это серьезно снижает скорость работы программы, но дает возможность компилировать программу под более широкий спектр оборудования. Такая сборка называется soft: полная программная эмуляция FPU( Full software floating point). Однако, если попытаться запустить программу скомпилированную под soft на процессоре с FPU, система собранная с soft point все же будет использовать данный модуль, однако расходы на непрямое использования блока получаются весьма существенными. Для среднестатистического приложения они составляют от 5 до 40%, а если приложение активно использует вычисления с плавающей точкой, то и до 200%!&lt;br /&gt;
&lt;br /&gt;
Подведем итоги.&amp;lt;range type=&amp;quot;comment&amp;quot; id=&amp;quot;808311&amp;quot;&amp;gt;В системе собранной с Hardfp работают только приложения собранные для работы на процессорах с FPU&amp;lt;/range id=&amp;quot;808311&amp;quot;&amp;gt;, зато быстро. В системе собранной с Softfp работают приложения собранные для работы на любых процессорах(soft), вне зависимости от наличия FPU, зато медленнее. Приложения собранные с Hardfp на системе собранной с softfp не работают.&lt;br /&gt;
&lt;br /&gt;
==Как отличить==&lt;br /&gt;
readelf -a /usr/bin/ar&lt;br /&gt;
&lt;br /&gt;
-- with-float=soft&lt;br /&gt;
 File Attributes&lt;br /&gt;
 Tag_CPU_name: &amp;quot;7-A&amp;quot;&lt;br /&gt;
 Tag_CPU_arch: v7&lt;br /&gt;
 Tag_CPU_arch_profile: Application&lt;br /&gt;
 Tag_ARM_ISA_use: Yes&lt;br /&gt;
 Tag_THUMB_ISA_use: Thumb-2&lt;br /&gt;
 Tag_FP_arch: VFPv3-D16&lt;br /&gt;
 Tag_ABI_PCS_wchar_t: 4&lt;br /&gt;
 Tag_ABI_FP_denormal: Needed&lt;br /&gt;
 Tag_ABI_FP_exceptions: Needed&lt;br /&gt;
 Tag_ABI_FP_number_model: IEEE 754&lt;br /&gt;
 Tag_ABI_align_needed: 8-byte&lt;br /&gt;
 Tag_ABI_align_preserved: 8-byte, except leaf SP&lt;br /&gt;
 Tag_ABI_enum_size: int&lt;br /&gt;
 Tag_DIV_use: Not allowed&lt;br /&gt;
&lt;br /&gt;
-- with-float=softfp&lt;br /&gt;
 File Attributes&lt;br /&gt;
 Tag_CPU_name: &amp;quot;7-A&amp;quot;&lt;br /&gt;
 Tag_CPU_arch: v7&lt;br /&gt;
 Tag_CPU_arch_profile: Application&lt;br /&gt;
 Tag_ARM_ISA_use: Yes&lt;br /&gt;
 Tag_THUMB_ISA_use: Thumb-2&lt;br /&gt;
 Tag_FP_arch: VFPv3-D16&lt;br /&gt;
 Tag_ABI_PCS_wchar_t: 4&lt;br /&gt;
 Tag_ABI_FP_denormal: Needed&lt;br /&gt;
 Tag_ABI_FP_exceptions: Needed&lt;br /&gt;
 Tag_ABI_FP_number_model: IEEE 754&lt;br /&gt;
 Tag_ABI_align_needed: 8-byte&lt;br /&gt;
 Tag_ABI_align_preserved: 8-byte, except leaf SP&lt;br /&gt;
 Tag_ABI_enum_size: int&lt;br /&gt;
 Tag_ABI_HardFP_use: SP and DP&lt;br /&gt;
 Tag_DIV_use: Not allowed&lt;br /&gt;
&lt;br /&gt;
-- with-float=hard&lt;br /&gt;
 File Attributes&lt;br /&gt;
 Tag_CPU_name: &amp;quot;7-A&amp;quot;&lt;br /&gt;
 Tag_CPU_arch: v7&lt;br /&gt;
 Tag_CPU_arch_profile: Application&lt;br /&gt;
 Tag_ARM_ISA_use: Yes&lt;br /&gt;
 Tag_THUMB_ISA_use: Thumb-2&lt;br /&gt;
 Tag_FP_arch: VFPv3-D16&lt;br /&gt;
 Tag_ABI_PCS_wchar_t: 4&lt;br /&gt;
 Tag_ABI_FP_denormal: Needed&lt;br /&gt;
 Tag_ABI_FP_exceptions: Needed&lt;br /&gt;
 Tag_ABI_FP_number_model: IEEE 754&lt;br /&gt;
 Tag_ABI_align_needed: 8-byte&lt;br /&gt;
 Tag_ABI_align_preserved: 8-byte, except leaf SP&lt;br /&gt;
 Tag_ABI_enum_size: int&lt;br /&gt;
 Tag_ABI_HardFP_use: SP and DP&lt;br /&gt;
 Tag_ABI_VFP_args: VFP registers&lt;br /&gt;
 Tag_DIV_use: Not allowed&lt;br /&gt;
&lt;br /&gt;
Ссылки по теме:&lt;br /&gt;
&lt;br /&gt;
http://wiki.debian.org/ArmHardFloatPort#VFP&lt;br /&gt;
http://wiki.debian.org/ArmHardFloatPort#Performance_improvements_and_benchmarks&lt;br /&gt;
http://wiki.debian.org/ArmHardFloatPort/VfpComparison&lt;br /&gt;
softfp: To reiterate, function calls are generated to pass FP arguments in integer registers&lt;br /&gt;
hard: FP arguments are passed directly in FPU registers&lt;br /&gt;
https://wiki.ubuntu.com/Mobile/ARMv7AndThumb&lt;br /&gt;
https://wiki.linaro.org/Linaro-arm-hardfloat&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>