|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.03.2023, 13:57 | #11 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Цитата:
Это скорее фиксация устоявшейся на тот момент времени ситуации. Посмотрим, как реализуют нормальные 16, 32, 64, 128 |
|
13.03.2023, 17:59 | #12 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Если я правильно помню, тогда 16-битный float: sign(1-bit),characteristic(6-bit,offset=31),mantiss(10-bit),дополняется нормальной единицей;
32-битный float (x87): sign(1-bit),characteristic(8-bit,offset=127),mantiss(24-bit),дополняется нормальной единицей; 64-битный float (x87): sign(1-bit),characteristic(12-bit,offset=2047),mantiss(52-bit),дополняется нормальной единицей; 80-битный float (x87): sign(1-bit),characteristic(15-bit,offset=32767),mantiss(64-bit),без дополнительной нормальной единицы; 128-битный float: sign(1-bit),characteristic(23-bit,offset=4194303),mantiss(104-bit),без дополнительной нормальной единицы; Уже и не помню где это прочитал. В каком-то тексте про ассемблер и программирование FPU. Так и не нашёл где это прочитал. |
13.03.2023, 19:14 | #13 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
|
13.03.2023, 19:38 | #14 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Нормальная единица - это образовано от термина нормаль. В нормализованной записи число в двоичном формате в старшем разряде мантиссы всегда содержит эту самую единицу. В некоторой документации её могут называть скрытой.
|
18.04.2023, 09:59 | #15 |
Пользователь
Регистрация: 25.09.2013
Сообщений: 58
|
В продолжение темы подскажите
структура fd_set на сайте MS описана Код:
Но при попытке вызова функции SELECT выводит Код:
Если fd_count = 8 байтам То все работает нормально. На форумe fasm нашел include файл с описанием структуры fd_set для 64 бит Код:
|
18.04.2023, 13:02 | #16 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
18.04.2023, 13:46 | #17 | |
Пользователь
Регистрация: 25.09.2013
Сообщений: 58
|
Цитата:
В локальных данных на сколько я понимаю из за невыровненных структур указатель стека может "поехать", если макросы locals/endl не отработают. |
|
18.04.2023, 13:50 | #18 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Критично. Для Windows WORD не может начинаться с адресов не кратных 2, DWORD - 4, QWORD - 8, DQWORD - 16, YWORD - 32, ZWORD - 64. Отсюда и требование к выравниванию стека на 64 байта.
В рамках своей собственной программы (и ваших же библиотек) вы спокойно можете работать с невыравненными переменными в секциях данных. Но при передачи адресов структур функциям WinAPI вы будете получать ошибки, если они не выровнены по вышеописанным правилам. В принципе требования Windows логичны и даже полезны. Поэтому их стоит придерживаться и в рамках своих программ. Они позволяют уменьшить количество промахов в линиях кэша и по TLB, а также дают возможность использовать команды с аппаратной оптимизацией доступа к памяти (movaps вместо movups - на некоторых процессорах такая оптимизация дает не плохой выигрыш по скорости). Последний раз редактировалось macomics; 18.04.2023 в 14:09. |
18.04.2023, 15:12 | #19 |
Пользователь
Регистрация: 25.09.2013
Сообщений: 58
|
Понял. Спасибо.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA и Win64 | Aent | Microsoft Office Excel | 4 | 22.11.2014 11:30 |
Win32/Win64 - драйвера и программы | xe3 | Win Api | 10 | 02.06.2014 14:07 |
От Win32 к Win64 | shuaal | Visual C++ | 0 | 25.10.2010 13:30 |
Lazarus компилит приложения для Win64? | Marsel737 | Lazarus, Free Pascal, CodeTyphon | 3 | 18.10.2010 02:30 |
Windows 7 win64 и SQL | Dux | SQL, базы данных | 0 | 17.03.2010 23:52 |