Page 2 of 2
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Mon Apr 01, 2013 1:42 pm
by Mario_r4
CleverMouse wrote:то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.
А мне почему-то кажется, что будет разница в
-2. (минус 2)
З.Ы. Хотя в предложенном варианте можно ввести проверку флага переполнения процессора и вероятно так решить проблему.
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Mon Apr 01, 2013 1:50 pm
by CleverMouse
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Mon Apr 01, 2013 2:54 pm
by Mario_r4
Да, все так и есть. Специально накидал пример:
Spoiler:
Code: Select all
; Сохранить в стеке регистр 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 (флаг переноса).
З.Ы. Мне нужно обдумать свою собственную логику, найти, понять и скорректировать противоречие в моих размышлениях.
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Mon Apr 01, 2013 3:54 pm
by Serge
0xFFFFFFFF это -1 в дополнительном коде.
Получается 1 - (-1) = 2.
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Sun Apr 07, 2013 9:09 am
by Aeol
Не вижу никакой сложности в том, чтобы расширить возвращаемое функцией значение до пары eax+ebx.
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Sun Apr 07, 2013 9:33 am
by SoUrcerer
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Sun Apr 07, 2013 2:20 pm
by Aeol
SoUrcerer wrote:Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.
Re: UpTime - Аптайм или время непрерывной работы системы
Posted: Sun Apr 07, 2013 2:34 pm
by Mario_r4
Aeol wrote:SoUrcerer wrote:Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.
Вот тут ошибочка - функция используется многими программами.