Почему я хочу добавить адрес в указатель стека? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь понять первый микрокоррупционный вызов .

Я хочу спросить о первой строке основной функции.

Зачем они добавляют это адрес указателя стека?

microcorruption

1 Ответ

4 голосов
/ 11 января 2020

Это выглядит как 16-битный ISA 1 , в противном случае разборка не имеет смысла.

0xff9c равен -100 в дополнении к 16-битному 2, так что это выглядит так резервирует 100 байт стекового пространства для использования main. (Стеки растут вниз на большинстве машин). Это не адрес, а небольшое смещение.

См. Поведение указателя стека сборки MSP430 для подробного примера макета и использования стека MSP430.


Сноска 1: MSP430 возможно? http://mspgcc.sourceforge.net/manual/x82.html это 16-битный ISA с этими именами регистров и этими мнемониками , и я думаю, что в его машинном коде используются 2 или 4-байтовые инструкции переменной длины.

Это определенно не ARM; call и jmp не являются мнемоникой ARM; это было бы bl и b. Кроме того, ARM использует синтаксис op dst, src1, src2, в то время как эта разборка использует op src, dst.

...