Kernel architecture questions
-
-
- Posts 2328
- Joined: Sun Feb 10, 2013 12:37 pm
CleverMouse wrote:то после вычитания получится корректная разница ecx = 2 тика таймера, с которой можно поступать как обычно.
А мне почему-то кажется, что будет разница в
-2. (минус 2)
З.Ы. Хотя в предложенном варианте можно ввести проверку флага переполнения процессора и вероятно так решить проблему.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
-
- Posts 1625
- Joined: Thu Sep 03, 2009 1:52 pm
-
- Posts 2328
- Joined: Sun Feb 10, 2013 12:37 pm
Да, все так и есть. Специально накидал пример:
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 (флаг переноса).
З.Ы. Мне нужно обдумать свою собственную логику, найти, понять и скорректировать противоречие в моих размышлениях.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
-
- Posts 3952
- Joined: Wed Mar 08, 2006 6:25 pm
0xFFFFFFFF это -1 в дополнительном коде.
Получается 1 - (-1) = 2.
-
- Posts 19
- Joined: Tue Feb 26, 2013 1:00 pm
Не вижу никакой сложности в том, чтобы расширить возвращаемое функцией значение до пары eax+ebx.
-
- Posts 2810
- Joined: Mon Sep 24, 2007 11:11 am
Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
-
- Posts 19
- Joined: Tue Feb 26, 2013 1:00 pm
SoUrcerer wrote:Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.
-
- Posts 2328
- Joined: Sun Feb 10, 2013 12:37 pm
Aeol wrote:SoUrcerer wrote:Ага, но это при условии, что эту функцию никто не использует в своем коде. А если используют, и уверены, что функция портит только eax, а ebx не затирается?
Насколько я знаю, в шелле есть команда uptime, которая использует эту функцию, может ещё она где-то используется, но переделывать много, таки думаю, не придётся.
Вот тут ошибочка - функция используется многими программами.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Users browsing this forum: No registered users and 1 guest