![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 28.09.2009
Сообщений: 52
|
![]()
Здравствуйте. Меня интересует команда Fabs. Насколько я понял, она находит абсолютное значение(модуль) вершины стека. Как мне известно информацию в стеке изменять нельзя, следовательно что бы сделать модуль вершины стека, необходимо извлечь вершину поместить в какой либо регистр, там найти модуль и поместить назад в стек, чем собственно и занимается команда FABS. И вот мне интересно, в какой собственно регистр или возможно ещё куда-нибудь команда FABS помещает эту вершину. Или я что то недопонимаю? Помогите, пожалуйста разобраться.
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
fabs как и многие команды сопроцессора помещают результат на вершуну стека сопроцессора.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 28.09.2009
Сообщений: 52
|
![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
![]()
Не забивайте себе голову, ничего никуда не перемещается. Разберитесь с форматом чисел с плавающей точкой и поймете, что fabs всего сбрасывает старший знаковый бит числа. Это элементарное действие.
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Mr.Steroid чтобы было понятнее
Код:
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 28.09.2009
Сообщений: 52
|
![]()
А вот представим такую ситуацию. В вершине стека сидит вещественное отрицательное число представленное в дополнительном коде. Знак, порядок мантиса. Что же получается, Fabs просто сбросит значение знака в 0 и всё???
|
![]() |
![]() |
![]() |
#7 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Mr.Steroid
В дополнительном коде представлены целочисленные числа, они находятся в памяти и регистрах процессора. Сопроцессор работает только с вещественными числами, а они представлены в виде знак + модуль числа, читай книжки Цитата:
Последний раз редактировалось Mikl___; 17.02.2012 в 11:36. |
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 28.09.2009
Сообщений: 52
|
![]() |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
![]()
Mr.Steroid
Брэдли . Программирование на языке ассемблера для персональной ЭВМ фирмы IBM.– М. : Радио и связь, 1988. – 448 с. Магда Ю. Ассемблер для процессоров Intel Pentium. – Спб. : Питер, 2006. – 410 с. Зубков С.В., Ассемблер для DOS, Windows и UNIX. – М. : ДМК Пресс, 2000. – 608 с. Юров В. Assembler: специальный справочник.– Спб. : Питер, 2001.– 496 с. Ю-Чжен Лю, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем.– М. : Радио и связь, 1987.– 512 с. Intel ® 64 and IA-32 Architectures Optimization Reference Manual Intel ® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture Intel ® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M Intel ® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z Intel ® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1 Intel ® 64 and IA-32 Architectures Software Developer’s Manual Volume 3B: System Programming Guide, Part 2 Leiterman J.C. 32/64-BIT 80x86 Assembly Language Architecture. © 2005, Wordware Publishing, Inc (568 pages) 2320 Los Rios Boulevard Plano, Texas 75074 Turbo Assembler® Version 3.2 User's Guide Borland International. Inc 1800 Green Hills Road P.O. BOX 660001, Scotts Valley, CA 95067-0001 Статьи с сайта www.wasm.ru Статьи на сайте sasm.narod.ru Отличная статья с сайта www.rsdn.ru Холодилов С. Плавающая запятая Источник: RSDN Magazine #4-2007 Последний раз редактировалось Mikl___; 17.02.2012 в 11:45. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 28.09.2009
Сообщений: 52
|
![]()
Ого. Спасибо большое. И ещё вопрос. Вы написали что для вещественных применяется формат знак+матиса. А как же порядок?
И из интереса, Команда FABS же не может изменить значение знака прямо в самом стеке, наверное она вынимает из стека Вершину, помещает в какой либо регистр, затем меняет там знак и помещает обратно в вершину? Или же она меняет знак прямо в самом стеке? Меня просто интересует этот вопрос не столько с точки зрения программирования, а с точки зрения организации ЭВМ. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
функции pow и fabs | victor5133 | Помощь студентам | 1 | 15.10.2011 12:07 |
fabs() не хочет работать | Razza | Общие вопросы C/C++ | 2 | 28.12.2010 02:21 |