Size: a a a

Ассемблер

2020 June 17

RS

Rusty Shackleford in Ассемблер
вот так ?
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
источник

RS

Rusty Shackleford in Ассемблер
мне хотя бы просто понять как должно быть правильно, дальше я уже сам буду копаться сидеть в отладчике с калькулятором
источник

RS

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

s

s54816 in Ассемблер
Rusty Shackleford
а структуру одну и туже используют ?
Логически она одна и та же, физически из-за разницы размера ULONG_PTR и выравнивания она отличается размером и офсетами ниже th32DefaultHeapID.
источник

s

s54816 in Ассемблер
Rusty Shackleford
вот так ?
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
Да, так.
источник

RS

Rusty Shackleford in Ассемблер
Большое спасибо!
источник

RS

Rusty Shackleford in Ассемблер
s54816
Логически она одна и та же, физически из-за разницы размера ULONG_PTR и выравнивания она отличается размером и офсетами ниже th32DefaultHeapID.
оффсеты автоматически смещаются в апи вызове x64 да ?
источник

RS

Rusty Shackleford in Ассемблер
тоесть название вызова одно но вызовы разные, и разница как раз в оффсетах будет, я так понимаю
источник

s

s54816 in Ассемблер
Rusty Shackleford
оффсеты автоматически смещаются в апи вызове x64 да ?
Когда компилируется сишный код со структурой, компилятор высчитывает офсеты, отталкиваясь от нужного выравнивания. А компилируется этот код в винде дважды: для WOW64 (32-битного кода) и для 64-битного кода. Получаются два разных варианта структуры.
источник

RS

Rusty Shackleford in Ассемблер
s54816
Когда компилируется сишный код со структурой, компилятор высчитывает офсеты, отталкиваясь от нужного выравнивания. А компилируется этот код в винде дважды: для WOW64 (32-битного кода) и для 64-битного кода. Получаются два разных варианта структуры.
апи вызов x64 будет знать, что у нас идет выравнивание dq поля, верно ? что у нас rd 1 выравнивание
источник

s

s54816 in Ассемблер
Rusty Shackleford
апи вызов x64 будет знать, что у нас идет выравнивание dq поля, верно ? что у нас rd 1 выравнивание
Да.
источник

RS

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

RS

Rusty Shackleford in Ассемблер
Вы как всегда, понимаете мои идиотские формулировки вопроса ))) спасибо!
источник

s

s54816 in Ассемблер
Он не будет ничего видеть. Он на Си. Он будет писать в поле структуры и попадёт правильно. Про выравнивание знает только компилятор.
источник

RS

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

ST

Saenro T in Ассемблер
А где Nikita?
источник
2020 June 18

A

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

AS

Alexey Stepanov in Ассемблер
Привет.
Подскажите пожалуйста, не понимаю до конца тему, запутался
Любая программа запущенная в рамках процесса ОС, имеет возможность обращаться вычислительным / пространственным ресурсам с помощью системных вызовов? То есть, это самый низкий уровень, доступный программе (в рамках процесса)? Ассемблерный код получается должен их использовать, т.к. ресурсами менеджерит ОС. Я правильно понимаю?
источник

D

Denis in Ассемблер
Alexey Stepanov
Привет.
Подскажите пожалуйста, не понимаю до конца тему, запутался
Любая программа запущенная в рамках процесса ОС, имеет возможность обращаться вычислительным / пространственным ресурсам с помощью системных вызовов? То есть, это самый низкий уровень, доступный программе (в рамках процесса)? Ассемблерный код получается должен их использовать, т.к. ресурсами менеджерит ОС. Я правильно понимаю?
да, любая, иначе она завершиться не сможет и ничего полезного передать наружу
источник

AS

Alexey Stepanov in Ассемблер
Еще вопрос есть, если не трудно)
Конечный этап с уровня софта - это последовательность инструкций состоящая из команд ISA?
И ОС позволяет абстрагироваться от него, предоставляя интерфейс в виде системных вызовов?
Не понимаю тогда, каким образом с помощью ассемблера, если я правильно понял, можно писать код под разные ISA, обходя ОС, получается?
источник