Описание тега stack-frame
Используйте stackframe для вопросов, связанных с отладкой незавершенных вызовов функций.
3
ответа
C++ возвращает местонахождение объектов класса значения в памяти после оптимизации
Допустим, есть определенный пользователемclass Foo. В некоторых сообщениях предполагается, что объект класса C++ «никогда» не размещается в куче, если он не выделен с помощьюnew. Но! с другой стороны, есть сообщения, которые предполагают, что возвра…
22 июл '23 в 09:30
1
ответ
Что означает, что регистр Ebp указывает на старый Ebp
Недавно я изучал ассемблер x86 для обратного проектирования, и в моем уроке есть предложение, в котором говорится, что Ebp указывает на старый Ebp, однако я этого не понимаю, это сбивает с толку. Я просмотрел другие сообщения об этом, но никто не от…
05 апр '23 в 17:01
1
ответ
Как выполнить оптимизацию хвостового вызова в Scala3?
Я пытаюсь написать программу, которая является 100% итеративной, то есть функции никогда не должны возвращаться, потому что после такого возврата ничего не должно происходить. Другими словами, программа на 100% находится в хвостовой позиции. Рассмот…
05 май '23 в 12:43
1
ответ
Как alloca() взаимодействовала с другими распределениями стека?
Начнем с простого примера распределения стека: void f() { int a, b; ... } Если я правильно понимаю. Тогда адрес и имеет фиксированное смещение от базы стека, а именно регистра.ebp. Вот как компилятор найдет их, если они нам понадобятся впоследствии.…
13 авг '23 в 06:30
0
ответов
C# найдите последний экземпляр, с которым взаимодействовали в стеке вызовов.
Я работаю над личнымC#проект, в котором я хочу перенаправить потоки консоли на разные входы/выходы для разных экземпляров объектов. Например, у меня есть класс, к которому у меня нет доступа к исходному коду. У меня есть несколько экземпляров , и я …
04 июл '23 в 23:53
1
ответ
Код сборки x86 выполняется успешно, но vscode показывает ошибку без дополнительной информации.
Я новичок в сборке, и у меня возникла проблема. Я скомпилировал следующий код с помощью GCC: .intel_syntax noprefix .section .data number: .int 65 message: .ascii "The number is %d %d.\n\0" .section .text .globl _main _main: push ebp lea eax, [messa…
16 апр '23 в 08:23
0
ответов
Как я могу получить доступ к аргументам 7+, используя встроенную сборку?
Я хотел бы создать вариативную функцию, которая суммирует свои входные данные. Мне удалось написать встроенную сборку для захвата аргументов 2–6, но я изо всех сил пытаюсь получить другие аргументы из кадра стека. Я пытаюсь решить упражнение по коди…
16 апр '23 в 08:57
0
ответов
Где находится база в пустом возрастающем стеке в сборке ARM?
Сейчас я работаю над заданием для сборки ARM 7 (Big Endian). Мы используем LDMDB и STMIA для решения этой задачи, когда у нас есть пустой восходящий стек, и меня просят поместить значение указателя кадра на вершину стека. Затем меня просят указать у…
17 апр '23 в 04:53
1
ответ
Кадр, стек Кадр в процессе Укладка Разборка штабеля
Процесс укладки Когда я говорил о процессе стекирования, я имел в виду фрейм, в котором будут храниться данные регистров ЦП, таких как PC(счетчик программ) или LR, но советник сказал, что это не так, и не стал копать глубоко. Но когда я смотрю в Goo…
30 авг '23 в 07:12
1
ответ
Помещает ли System V ABI в Ubuntu адрес возврата в кадр вызывающей функции или в кадр вызываемой функции?
Моя система: Ubuntu 22.04.3, работающая на x86_64. GCC версия 11.4.0 Я спрашиваю об этом, потому что кажется, что существует два разных представления обратного адреса в зависимости от кадра, в котором он находится (вызывающий или вызываемый). Вот чт…
28 авг '23 в 12:37
0
ответов
Как отследить Stack Frame вручную, используя только необработанную запись в памяти программы?
У меня есть дамп памяти программы, и я знаю диапазон памяти стека. Мой вопрос вращается вокруг идентификации кадра стека в этом фрагменте памяти. Проще говоря, как я могу определить часть памяти, где хранится адрес возврата, который помещается в сте…
19 окт '23 в 21:51
0
ответов
Шахматы с ABI в стековом фрейме Windows x64
Итак, я делаю игрушечный компилятор для сборки, и моя программа дает сбой на границе моего сгенерированного кода и кода C. Вот как выглядит сборка: (Pseudo-code from my compiler) def test(x: int) -> int: return magic_func(magic_func(x, x), magic_…
22 сен '23 в 15:51
0
ответов
Есть ли способ вычислить байты, выделенные для кадра стека функции?
Мне дали этот код на C, и мне нужно вычислить байты, выделенные для кадра стека функции arith. Я везде искал способ сделать это, но у всех разные ответы. long arith(long x, long y, long z){ long t1 = x + y; long t2 = z + t1; long t3 = x + 4; long t4…
27 окт '23 в 09:05
1
ответ
Как выделяется память для статического массива в стеке?
Я начал глубокое изучение эксплойтов, работы с памятью и т.д. и столкнулся с той же проблемой. Везде написано, что память выделяется переменным в порядке их объявления внутри функции, но в моем случае это абсолютно не влияет на это, т.е. указатель н…
18 окт '23 в 10:38
0
ответов
Почему компилятор обращается к аргументам относительно ESP в одной функции, а к EBP — в другой?
Вот код C-1: int max(int x, int y) { int diff = x - y; int mask = (diff >> 31) & 1; return y + mask * diff; } и его сборка O1 оптимизирована: movl 4(%esp), %eax movl %eax, %ecx subl 8(%esp), %ecx movl %ecx, %edx shrl $31, %edx imull %ecx, …
30 ноя '23 в 00:16
0
ответов
Я не могу использовать RSP для ссылки на конец стека.
в моей системе (x86_64), когда я использую GDB, и RBP, и RSP указывают на один и тот же адрес памяти после помещения нового кадра стека, поэтому я не могу ссылаться на конец стека с помощью регистра RSP, поскольку он имеет то же значение, что и RBP.…
26 ноя '23 в 04:19
0
ответов
tcl, как выполнить команду, в каком файле и в какой строке?
как узнать, когда я получаю сценарий tcl, какой proc/eval выполняется, в каком файле и в какой строке? ниже мой код: set counts [info frame]; set frame_list [info frame [expr {$counts - 2}] ] ; #for cmd type is "eval" set frame_list [info frame [exp…
05 окт '23 в 05:06