(Этот вопрос относится только к архитектуре моей машины и соглашения о вызовах, Windows x86_64) Я точно не помню, где я прочитал это, или если бы я вспомнил это правильно, но я слышал, что когда функц
Я пытался декомпилировать следующий ассемблерный фрагмент (это все, что у меня есть): 55 push %rbp
48 89 e5 mov %rsp,%rbp
48 81 ec d0 00 00 00 sub $0xd0,%rsp
64 48 8b 04 25 28 00 mov %fs:0x
Когда программы вводят _start При запуске программы указатель стека выровнен по границе 16 байтов или он должен быть выровнен вручную с этой границей? Я имею в виду, он выровнен перед прологом (push r
Инструкции SHLD/SHRD являются инструкциями по сборке для реализации сдвигов с несколькими значениями. Рассмотрим следующую задачу: uint64_t array[4] = {/*something*/};
left_shift(array, 172);
right_
Я смотрел, как NtDll работает для процессов x86, и я отлаживал функцию NtCreateFile с использованием IDA PRO. Код для этого является следующее: mov eax, 55h ; NtCreateFile
mov edx, offset [email p
Написал простую программу с большим буфером в сегменте .bss h_vals:
resq 99999
затем попытался увеличивает значение некоторой ячейки массива. mov rcx, [h_vals+8*rax]
inc rcx
mov [h_vals+8*rax