Board.KolibriOS.org

Official KolibriOS board
It is currently Mon May 20, 2019 8:24 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 23 posts ]  Go to page Previous 1 2
Author Message
PostPosted: Mon Apr 01, 2013 1:42 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
CleverMouse wrote:
то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.

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

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

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


Top
   
PostPosted: Mon Apr 01, 2013 1:50 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Проверь.
Code:
mov ecx,1
sub ecx,0xFFFFFFFF

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


Top
   
PostPosted: Mon Apr 01, 2013 2:54 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Да, все так и есть. Специально накидал пример:
Spoiler: Show
Code:
; Сохранить в стеке регистр 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 (флаг переноса).
Attachment:
timer_emul.7z [5.13 KiB]
Downloaded 115 times


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

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


Top
   
PostPosted: Mon Apr 01, 2013 3:54 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
0xFFFFFFFF это -1 в дополнительном коде.
Получается 1 - (-1) = 2.


Top
   
PostPosted: Sun Apr 07, 2013 9:09 am 
Offline

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


Top
   
PostPosted: Sun Apr 07, 2013 9:33 am 
Offline

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


Top
   
PostPosted: Sun Apr 07, 2013 2:20 pm 
Offline

Joined: Tue Feb 26, 2013 1:00 pm
Posts: 19
SoUrcerer wrote:
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?

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


Top
   
PostPosted: Sun Apr 07, 2013 2:34 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Aeol wrote:
SoUrcerer wrote:
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?

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

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

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 23 posts ]  Go to page Previous 1 2

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited