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
Проверь.

Code: Select all

mov ecx,1
sub ecx,0xFFFFFFFF

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 (флаг переноса).
timer_emul.7z (5.13 KiB)
Downloaded 387 times
З.Ы. Мне нужно обдумать свою собственную логику, найти, понять и скорректировать противоречие в моих размышлениях.

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, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.
Вот тут ошибочка - функция используется многими программами.