Size: a a a

Ассемблер

2021 May 21

d

disba1ancer in Ассемблер
Зачем, когда есть эмуляторы
источник

C

Cofeefee in Ассемблер
Сейчас в личку пришлю
источник

d

disba1ancer in Ассемблер
Меняй архитектуру, если, конечно, ты контролируешь код той функции...
источник

C

Cofeefee in Ассемблер
Что бог послал, на том и работаю)))
источник

d

disba1ancer in Ассемблер
Я прочитал, но та и не понял почему процедура не реентерабельна? И как так получается, что при каждом вызове общий стек?
источник

d

disba1ancer in Ассемблер
А почему вообще createmutex? И скорее всего она не портит регистры, а ты невнимательно следует соглашению о вызове
источник

AA

Anonimus Anonim in Ассемблер
Прошивка на ассемблере микроконтроллера клавиатуры
источник

C

Cofeefee in Ассемблер
Я смотрю по значению rsp
источник

AA

Anonimus Anonim in Ассемблер
Где можно посмотреть
источник

AA

Anonimus Anonim in Ассемблер
Вопрос остановились показания электросчетчика говорят это все из за корявой прошивки микроконтроллера электросчетчика вопрос как найти и исправить ошибку в прошивка микроконтроллера электросчетчика
источник

d

disba1ancer in Ассемблер
Что у тебя за отладчик?
источник

C

Cofeefee in Ассемблер
IDA
источник

C

Cofeefee in Ассемблер
X64DBG
источник

d

disba1ancer in Ассемблер
У тебя точка останова на входе в твою процедуру?
источник

C

Cofeefee in Ассемблер
Да, и перед вызовом собственной процедуры и в ней
источник

d

disba1ancer in Ассемблер
Ты уверен, что у тебя эта точка останова отлавливается в одном потоке?
источник

C

Cofeefee in Ассемблер
Да, а ей больше некуда деваться. При входе в мою процедуру поставил специально счетчик вызовов и при пошаговой трассировке вижу, что он уже несколько раз инкрементировался, пока я пошагово трассировал подготовку параметров для вызова моей функции. В Иде/x64dbg выглядит как произвольное изменение rip при пошаговой - всего лишь выщов одного и того же места из нескольких потоков
источник

D

Den in Ассемблер
Вот еще почитай, может это поможет навести порядок:

В Windows x86-64 используется единое соглашение вызовов __fastcall. Первые четыре целочисленных аргумента (слева направо) передаются в 64-битных регистрах RCX, RDX, R8 и R9. Остальные аргументы (целочисленные) передаются через стек (справа налево). Указатель this всегда хранится в регистре RCX. Даже если аргумент передан в регистре, вызывающая функция обязана резервировать для него место в стеке, уменьшая значение регистра RSP.
За очистку стека отвечает вызывающая функция
источник

D

Den in Ассемблер
вот еще по x64win:
Все операции с плавающей запятой выполняются с помощью 16 регистров XMM. Аргументы передаются в регистрах RCX, RDX, R8 и R9.
Если аргументы являются типами float или double, то они, как пишут в Microsoft Corporation, передаются в регистрах XMM0L, XMM1L, XMM2L и XMM3L с помощью регистров целых чисел RCX, RDX, R8 и R9
источник

C

Cofeefee in Ассемблер
У меня все процедуры по конвенции fastcall
источник