Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср апр 26, 2017 11:02 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 23 сообщения ]  На страницу Пред. 1 2
Автор Сообщение
СообщениеДобавлено: Пн апр 01, 2013 1:42 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
CleverMouse писал(а):
то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.

А мне почему-то кажется, что будет разница в -2. (минус 2)

З.Ы. Хотя в предложенном варианте можно ввести проверку флага переполнения процессора и вероятно так решить проблему.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Пн апр 01, 2013 1:50 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
Проверь.
Код:
mov ecx,1
sub ecx,0xFFFFFFFF

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пн апр 01, 2013 2:54 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Да, все так и есть. Специально накидал пример:
Спойлер: Показать
Код:
; Сохранить в стеке регистр EFLAGS
   pushfd
; Получить из стека регистр EFLAGS
   mov   eax,[esp]
   mov   [cpu_flags_1],eax
; Эмитация переполнения
   mov   ecx,1
   sub   ecx,0xFFFFFFFF
   mov   [ecx_value],ecx
; Сохранить в стеке регистр EFLAGS
   pushfd
; Получить из стека регистр EFLAGS
   mov   eax,[esp]
   mov   [cpu_flags_2],eax
; Восстановить из стека регистр EFLAGS
   popfd
; Восстановить из стека регистр EFLAGS
   popfd

Получил результат 2 и установку в 1 флага CF (флаг переноса).
Вложение:
timer_emul.7z [5.13 КБ]
49 скачиваний


З.Ы. Мне нужно обдумать свою собственную логику, найти, понять и скорректировать противоречие в моих размышлениях.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
СообщениеДобавлено: Пн апр 01, 2013 3:54 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
0xFFFFFFFF это -1 в дополнительном коде.
Получается 1 - (-1) = 2.


Вернуться к началу
СообщениеДобавлено: Вс апр 07, 2013 9:09 am 
Не в сети

Зарегистрирован: Вт фев 26, 2013 1:00 pm
Сообщения: 19
Не вижу никакой сложности в том, чтобы расширить возвращаемое функцией значение до пары eax+ebx.


Вернуться к началу
СообщениеДобавлено: Вс апр 07, 2013 9:33 am 
Не в сети

Зарегистрирован: Пн сен 24, 2007 11:11 am
Сообщения: 2814
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?


Вернуться к началу
СообщениеДобавлено: Вс апр 07, 2013 2:20 pm 
Не в сети

Зарегистрирован: Вт фев 26, 2013 1:00 pm
Сообщения: 19
SoUrcerer писал(а):
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?

Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.


Вернуться к началу
СообщениеДобавлено: Вс апр 07, 2013 2:34 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Aeol писал(а):
SoUrcerer писал(а):
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?

Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.

Вот тут ошибочка - функция используется многими программами.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 23 сообщения ]  На страницу Пред. 1 2

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB