Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820

Значения регистров процессора

26.02.2013, 19:09. Показов 2693. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно получить значение регистра в текущий момент времени, например EAX.
Подсмотрел кусочек WinApi кода, судя по всему почти то что нужно:

C++
1
2
3
4
hThread=OpenThread(THREAD_GET_CONTEXT, ...);
thread_context.ContextFlags = CONTEXT_ALL;
GetThreadContext(hThread,&thread_context);
ReadProcessMemory(Handle, (void *)((char *)thread_context.Eax+60), Buffer, SizeOf(Buffer), BytesRead);
Тут все понятно, импортируем и используем.

Теперь интересует, а можно ли обойтись структурами c# ?
т.е я вижу такие методы как System.Threading.Thread.CurrentContext.C ontextProperties , или это не то ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2013, 19:09
Ответы с готовыми решениями:

Вывод на экран двоичного содержимого двух регистров (ввести значения этих регистров требуется с клавиатуры)
требуется разработать программу вывода на экран двоичного содержимого двух регистров так, чтобы первоначальное содержимое этих регистров...

Размерность регистров процессора
Помогите кто-нибуть ответить на вопрос: Размерность регистров процессора.

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

6
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
26.02.2013, 19:17
Конечно можно
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
[StructLayout(LayoutKind.Sequential)]
public struct CONTEXT
{
    public uint ContextFlags; //set this to an appropriate value 
    // Retrieved by CONTEXT_DEBUG_REGISTERS 
    public uint Dr0;  
    public uint Dr1; 
    public uint Dr2; 
    public uint Dr3; 
    public uint Dr6; 
    public uint Dr7; 
    // Retrieved by CONTEXT_FLOATING_POINT 
    public FLOATING_SAVE_AREA FloatSave; 
    // Retrieved by CONTEXT_SEGMENTS 
    public uint SegGs; 
    public uint SegFs; 
    public uint SegEs; 
    public uint SegDs; 
    // Retrieved by CONTEXT_INTEGER 
    public uint Edi; 
    public uint Esi; 
    public uint Ebx; 
    public uint Edx; 
    public uint Ecx; 
    public uint Eax; 
    // Retrieved by CONTEXT_CONTROL 
    public uint Ebp; 
    public uint Eip; 
    public uint SegCs; 
    public uint EFlags; 
    public uint Esp; 
    public uint SegSs;
    // Retrieved by CONTEXT_EXTENDED_REGISTERS 
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 512)] 
    public byte[] ExtendedRegisters;
}
 
public enum CONTEXT_FLAGS : uint
 
{
 
  CONTEXT_i386 = 0x10000,
  CONTEXT_i486 = 0x10000,   //  same as i386
  CONTEXT_CONTROL = CONTEXT_i386 | 0x01, // SS:SP, CS:IP, FLAGS, BP
  CONTEXT_INTEGER = CONTEXT_i386 | 0x02, // AX, BX, CX, DX, SI, DI
  CONTEXT_SEGMENTS = CONTEXT_i386 | 0x04, // DS, ES, FS, GS
  CONTEXT_FLOATING_POINT = CONTEXT_i386 | 0x08, // 387 state
  CONTEXT_DEBUG_REGISTERS = CONTEXT_i386 | 0x10, // DB 0-3,6,7
  CONTEXT_EXTENDED_REGISTERS = CONTEXT_i386 | 0x20, // cpu specific extensions
  CONTEXT_FULL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS,
  CONTEXT_ALL = CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS |  CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS |  CONTEXT_EXTENDED_REGISTERS
}
2
 Аватар для sau
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
26.02.2013, 19:35  [ТС]
Как это реализовать на c# с помощью pinvoke мне понятно.
наделся обойтись существующими структурами/классами/методами c# - т.е без WinApi,
но MSDN говорит что System.Runtime.Remoting.Contexts.Context Property для внутренних нужд, т.е совсем не то ).
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
26.02.2013, 21:39
Вот мне интересно: а сам факт вызова функции для проверки регистра разве не затрет значение этого регистра?
0
 Аватар для Yukikaze
352 / 331 / 49
Регистрация: 12.12.2011
Сообщений: 563
26.02.2013, 22:08
kolorotur, а если из другого потока?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
26.02.2013, 23:57
А какая разница?
Поток — это не более чем контекст, ЦП-то все равно один.
Только если на многоядернике считывать значение с другого ядра, но там тогда нужен будет четкий контроль: на каком ядре отрабатывает код и с какого ядра считывает значения.
0
 Аватар для Lasur
267 / 257 / 43
Регистрация: 18.03.2012
Сообщений: 506
27.02.2013, 07:41
Yukikaze, значения регистров уникальны для каждого потока. Контекст потока не что иное, как набор значений его регистров. Соответственно, при смене потока происходит и смена текущего контекста CPU, а все значения предыдущего сохраняются в kernel объекте потока (Thread kernel object).
Ситуацию еще усложняет отсутствие взаимно-однозначного соответствия между unmanaged и managed потоками:
http://stackoverflow.com/quest... 46#1679346
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2013, 07:41
Помогаю со студенческими работами здесь

Поясните назначение регистров и флагов процессора i80x86
Здравствуйте. Можно вопрос: Где найти полный список регистров процессора, или что вообще означают понятия CF=0 и ZF=0 и вообще значение...

Написать программу, выводящую на экран названия и содержимое регистров процессора 80386
Помогите пожалуйста Написать программу, выводящую на экран названия и содержимое регистров процессора 80386: EAX..EDI, CS..GS, CR0, CR2 ...

Вычисление смещения дескрипторов по таблице состояние основных регистров процессора при выполнении задачи в Protect Mode
Начал изучать ассемблер, застрял на таком задании В приведенной ниже таблице показано состояние основных регистров процессора при...

считывание значения регистров
Добрый день. может я несу какой то бред, но очень волнует вопрос. На post карте от PC есть семисегментные индикаторы, которые...

Указать значения регистров и флагов в программе
.model small .stack 256 .data a db 254 .code main: mov ax, @data mov ds, ax xor ax, ax


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru