Size: a a a

Ассемблер

2020 June 17

D

Dim in Ассемблер
но сперва надо выяснить скорость работы аес128 на нем!
источник

D

Denis in Ассемблер
Dim
но сперва надо выяснить скорость работы аес128 на нем!
методом тыка опять?)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Denis
что-то меня остаток от деления на 10 удивил тогда
чем?
источник

D

Denis in Ассемблер
да длинно слишком
источник

RS

Rusty Shackleford in Ассемблер
Помогите пожалуйста разобраться с выравниванием структуры:
struct PROCESSENTRY32
 dwSize              dd ?
 cntUsage            dd ?
 th32ProcessID       dd ?
 th32DefaultHeapID   dq ?
 th32ModuleID        dd ?
 cntThreads          dd ?
 th32ParentProcessID dd ?
 pcPriClassBase      dd ?
 dwFlags             dd ?
 szExeFile           rb 260
ends    
программа x64, по этому из мсдн th32DefaultHeapID  должен быть dq
typedef struct tagPROCESSENTRY32 {
 DWORD     dwSize;
 DWORD     cntUsage;
 DWORD     th32ProcessID;
 ULONG_PTR th32DefaultHeapID;
 DWORD     th32ModuleID;
 DWORD     cntThreads;
 DWORD     th32ParentProcessID;
 LONG      pcPriClassBase;
 DWORD     dwFlags;
 CHAR      szExeFile[MAX_PATH];
} PROCESSENTRY32;

первый вариант не работает, вот рабочий вариант:
struct PROCESSENTRY32
 dwSize              dd ?
 cntUsage            dd ?
 th32ProcessID       dd ?
 rd 1
 th32DefaultHeapID   dq ?
 th32ModuleID        dd ?
 cntThreads          dd ?
 th32ParentProcessID dd ?
 pcPriClassBase      dd ?
 dwFlags             dd ?
 szExeFile           rb 260
ends                              

Для меня непонятно, почему нужно резервировать еще 4 байта, ведь адрес th32DefaultHeapID и так будет кратен 8, допустим структура расположена по адресу 402000, первые 3 dd поля будут +12байт = 402012, тоесть dq поле будет по адресу 402012
что кратно 8, но так не работает...
источник

RS

Rusty Shackleford in Ассемблер
и еще, если в структуре резервировать вот таким образом 4 байта, это же нарушает расположение полей, тоесть не соответсвутет мсдн, почеу же так работает а без резервирования нет, тоесть оно то работает, я вижу что заполняется структура при вызове апи, но при обращении к полям всеравно не правильно смещение дает, что в итоге делает ее не пригодной
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
короч, смещение в +12 байт это не 402012, а 40200С
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
да даже если 12, то как это кратно 8?
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
короч, смещение в +12 байт это не 402012, а 40200С
ой да, конечно +С
источник

RS

Rusty Shackleford in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
да даже если 12, то как это кратно 8?
ну Ch/8h = 1
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
ну Ch/8h = 1
а в десятичной раздели
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
ну Ch/8h = 1
и ты уверен что в edx ноль будет при таком делении?
источник

RS

Rusty Shackleford in Ассемблер
хм
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
знаю знаю, ты на виндовом  сalc.exe делишь
источник

RS

Rusty Shackleford in Ассемблер
да вижу, а если 4 байта резервируем что у нас получается
источник

RS

Rusty Shackleford in Ассемблер
да ))
источник

RS

Rusty Shackleford in Ассемблер
а ну если еще +4 прибавить получается 10h или 16d
источник

RS

Rusty Shackleford in Ассемблер
16/8 без остатка
источник

RS

Rusty Shackleford in Ассемблер
верно ? по этому еще 4 байта резервируется ?
и второй вопрос всеравно остается, получается рушится структура если в ней что-то резервировать, как быть, как совместить dq dd
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
да
источник