Описание тега stack-pointer
Регистр, указывающий на текущее местоположение в стеке вызовов. Детали зависят от архитектуры процессора, но неявное использование инструкций push/pop является обычным явлением.
(Пожалуйста, также добавьте тег архитектуры!)
1
ответ
Какой регистр используется вместо FP (Frame Pointer) в сборке 8086?
Какой регистр используется в сборке 8086 вместо FP? Я думаю, что это SP или ESP. Я прав?
03 июн '11 в 13:48
1
ответ
Указатель стека в сборке. ESP очки всегда пустое место или нет?
Первоначально ESP относится к пустому пространству памяти. Когда я нажимаю что-то, такое как push 1, то это относится к ячейке памяти 1 или к следующему пустому месту? вот пример push ebp mov ebp, esp /* --------- (empty space) <- esp, ebp ------…
04 янв '19 в 20:13
1
ответ
Почему сохраненный указатель кадра присутствует в кадре стека?
Я прочитал, что SFP используется для восстановления EBP к его предыдущему значению. Почему EBP необходимо вернуться к своему первоначальному значению?
14 июл '17 в 22:01
1
ответ
vector, sfml и ошибка "значение esp не было правильно сохранено в вызове функции"
У меня есть структура "Layer" и класс "LayerHandler". Слой состоит только из текстуры, спрайта и двух конструкторов - один по умолчанию и один со ссылочным параметром. Класс LayerHandler - это класс, который обрабатывает рисование всех слоев, которы…
21 июн '15 в 11:03
4
ответа
Как работает регистр указателя стека
Ну как работает стек? Например инструкция: push ax равно: sub sp, 4 mov sp, ax где sp - указатель стека. Это правильно? Мой вопрос - какой смысл вычитать 4 из регистра sp, если через мгновение я изменяю его на совершенно другое значение?
02 июл '13 в 20:52
2
ответа
Конвертировать код C в сборку MIPS - комбинированная функция с использованием рекурсии
У меня проблема с разговором кода C с кодом сборки MIPS комбинированной функции (nCr). nCr = (n-1Cr-1) + (n-1Cr) и когда я ставлю int 5 для n и 3 для r (цифровые данные), результат должен быть 10. Я хочу использовать рекурсию и указатель стека, но у…
10 окт '18 в 19:03
0
ответов
Стек вызовов C использует "ebp" для посещения переменных, тогда "esp" кажется избыточным?
Функция C использует стек вызовов (стековый фрейм) для добавления / извлечения регистров до / после вызова функции. Если ebp - это указатель кадра, который используется для посещения всех переменных в стеке, то кажется, что esp является избыточным? …
18 сен '16 в 11:13
0
ответов
Указатель стека Mips не может достичь следующего значения стека
Я пытаюсь сделать программу на Марсе, которая, используя $sp, может перейти к следующему адресу стека и прочитать значение: fine_while: add $a0, $S,$a2 li $v0, 1 syscall move $t5, $sp#indirizzo iniziale move $sp, $t6 #indiirzzi di -51 subi $sp, $sp,…
01 апр '18 в 09:37
4
ответа
Неверный ESP при использовании множественного наследования в C++ (VS2005)
Я делал игру, которая использует физический движок Box2D, и я столкнулся с некоторыми странностями с указателем стека (ESP) и множественным наследованием. Мне удалось воспроизвести его в минимальном объеме кода, и кажется, что порядок, в котором я о…
24 янв '10 в 01:11
1
ответ
Куда именно (!) Указывает указатель стека на процессорах x86? К верхнему элементу или прямо за ним?
В некоторых руководствах говорится, что указатель стека указывает на верхний элемент стека: +-------------+ | stack | +-------------+ | top element | <-- esp +-------------+ В других говорится, что он указывает прямо за ним, то есть на первый адр…
14 ноя '17 в 23:53
1
ответ
Указатель стека указывает на зарезервированную память
Я отлаживаю код для криптографической реализации на Tricore TC275 от Infineon ( справочный язык ассемблера). PMI_PSPR (wx!p): org = 0xC0000000, len = 24K /*Scratch-Pad RAM (PSPR)*/ DMI_DSPR (w!xp): org = 0xD0000000, len = 112K /*Local Data RAM (DSPR…
25 июл '18 в 11:34
1
ответ
Как изменить процессорный стек?
Почему этот код не печатает "тест"? #include <stdio.h> #include <stdlib.h> void foo ( void ) { printf("test\n"); } __declspec(naked) void bar ( void ) { asm { push 0x000FFFFF call malloc pop ecx push eax add eax, 0x000EFFFF mov ecx, esp …
06 май '09 в 18:47
1
ответ
Ошибка проверки времени выполнения #0 во встроенном коде asm
Я немного новичок в ассемблере, но я пытаюсь найти параметры из метода C++ в esp стек, используя встроенный ассемблерный код. До сих пор я даже не смог скопировать esp указатель на ebp так что я могу взять стек (в случае его изменения). Даже этот ма…
05 май '11 в 17:59
1
ответ
'dds esp' на Windbg
Я не уверен, понимаю ли я dds esp или его 64-битный аналог dqs rsp должным образом. Когда я вижу список записей в стеке, я склонен полагать, что везде, где я вижу адреса возврата, это вызовы, сделанные кодом, который еще не вернулся. Таким образом, …
06 окт '17 в 16:23
1
ответ
Повышение исключительных ситуаций приводит к повреждению указателя стека (Ошибка проверки времени выполнения #0 ...)
В небольшом проекте я использую несколько буст-пакетов (asio, property_tree, файловая система и т. Д.) И должен был заметить, что все работает нормально, пока где-то в буст-пакетах не возникнет исключение. Это происходит во всех этих пакетах, но теп…
11 июл '13 в 17:28
1
ответ
Создание пространства для локальных переменных в сборке
Так что мне нужно написать программу на ассемблере, которая вызывала бы функцию extern C. Итак, я написал простой pow Функция, я скомпилировал мою программу сборки с этим кодом C. Все работает. Но как я видел из -S команда от gccкомпилятор создает п…
10 апр '17 в 11:08
1
ответ
Соглашение о вызовах ESP C++
Для домашней работы я должен прочитать файл и отсортировать строки. Для этого я использую сортировку выбора, и она работает. Теперь, сразу после вызова функции selSort происходит сбой. У меня закончились идеи, чтобы решить эту проблему, кто-нибудь м…
16 сен '11 в 21:48
0
ответов
Как зарегистрировать ESP?
У меня есть кусок кода, как это: #include<stdio.h> main() { xxx(1234); } int xxx(int b) { int c; c=b; return c; } Я использую GDB, чтобы показать, какое значение регистра ESP и как оно работает, сделав точку останова на xxx(1234); а также c=b;…
15 фев '16 в 13:13
0
ответов
Сборка: я не понимаю, почему указатель стека кажется (!) резервировать здесь недостаточно памяти
Я новичок в сборке, поэтому ответ на мой вопрос вполне очевиден для большинства из вас, но не для меня. Пожалуйста, не вините. На 64-битной системе этот C-код: 1| int main () 2| { 3| char ary[230]; 4| ary[0] = 2; 5| return 0; 6| } Результаты в этом …
03 фев '19 в 15:12
2
ответа
Как остановить ESP от повреждения в __fastcall?
Я пытаюсь написать функцию в ассемблере, которая устанавливает блок памяти в указанное значение, очень похоже на memset(), однако, когда я собираюсь получить третий аргумент из стека (он использует соглашение о вызовах fastcall), регистр ECX получае…
04 дек '11 в 04:38