Size: a a a

2ch /pr/ #staythefuckhome

2020 March 30

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
Причем это сам компилятор сгенерил
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
Коля🤔🎭
_a$ = 8 ; size = 4
_b$ = 12 ; size = 4
_c$ = 16 ; size = 4
_f PROC
  push ebp
  mov ebp, esp
  mov eax, DWORD PTR _a$[ebp]
  imul eax, DWORD PTR _b$[ebp]
  add eax, DWORD PTR _c$[ebp]
  pop ebp
  ret 0
_f ENDP
_main PROC
  push ebp
  mov ebp, esp
  push 3 ; третий аргумент
  push 2 ; второй аргумент
  push 1 ; первый аргумент
  call _f

     
...

Почему макрос _a$ = 8, а не 4? wtf?
8 байтов от указателя стека. +4 шаг для целочисленных
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
: _a$ = 8, но разница в том, что эти смещения со знаком плюс, таким образом если прибавить
макрос _a$ к указателю на EBP, то адресуется внешняя часть фрейма стека относительно EBP.
источник

z

zeroid in 2ch /pr/ #staythefuckhome
Лучше сам в студии посмотри листинг, с листка так хуй что поймешь
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
Я все равно не до конца понял
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
+4 это return address
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
a это + 8 и тд тп
источник

z

zeroid in 2ch /pr/ #staythefuckhome
4 на сейв ebp, 4 на рет адресс
источник

tb

thunder bolt in 2ch /pr/ #staythefuckhome
аргументы caller в стек положил
источник

.

..:: махуноф ::.. in 2ch /pr/ #staythefuckhome
фу, ассемблисты
источник

z

zeroid in 2ch /pr/ #staythefuckhome
xor eax, eax
jmp eax
источник

z

zeroid in 2ch /pr/ #staythefuckhome
источник

.

..:: махуноф ::.. in 2ch /pr/ #staythefuckhome
Нет указателя
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
ESP-0xC локальная переменная#2, маркируется в IDA как var_8
ESP-8 локальная переменная#1, маркируется в IDA как var_4
ESP-4 сохраненное значениеEBP
ESP Адрес возврата
ESP+4 аргумент#1, маркируется в IDA как arg_0
ESP+8 аргумент#2, маркируется в IDA как arg_4
ESP+0xC аргумент#3, маркируется в IDA как arg_8

Всё равно мозг кипит как-то. Походу.. я еблан?
источник

NK

ID:1008643686 in 2ch /pr/ #staythefuckhome
источник

NK

ID:1008643686 in 2ch /pr/ #staythefuckhome
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄 in 2ch /pr/ #staythefuckhome
ID:1008643686
потому что на этом написаны километры кода, теперь уже и в новых стандартах
А почему кстати ?: в плюсах может быть lvalue и зачем?
источник

NK

ID:1008643686 in 2ch /pr/ #staythefuckhome
Коля🤔🎭
ESP-0xC локальная переменная#2, маркируется в IDA как var_8
ESP-8 локальная переменная#1, маркируется в IDA как var_4
ESP-4 сохраненное значениеEBP
ESP Адрес возврата
ESP+4 аргумент#1, маркируется в IDA как arg_0
ESP+8 аргумент#2, маркируется в IDA как arg_4
ESP+0xC аргумент#3, маркируется в IDA как arg_8

Всё равно мозг кипит как-то. Походу.. я еблан?
зачем ты это записываешь в табличку?
аргументы они вперед от esp (esp + xx), локальные "переменные" назад от esp (esp - xx). как сказано выше, переменных-то нет, это просто стек.
источник

К

Коля🤔🎭 in 2ch /pr/ #staythefuckhome
ID:1008643686
зачем ты это записываешь в табличку?
аргументы они вперед от esp (esp + xx), локальные "переменные" назад от esp (esp - xx). как сказано выше, переменных-то нет, это просто стек.
я это скопировал, лол)
источник

z

zeroid in 2ch /pr/ #staythefuckhome
Вообще нахуй этот x86, вкатывайся в x64  сразу
источник