Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/23: Рейтинг темы: голосов - 23, средняя оценка - 4.57
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

стек

23.11.2019, 19:04. Показов 5151. Ответов 25

Студворк — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
int main(){
 
asm(
 
 
"push %%rbp\t\n"
"movq $555, 4(%%rsp)\t\n"
 
);
}
 
так могу поместить что-то в стек

C
1
2
3
4
5
6
7
8
9
10
11
12
13
но создать новый фрейм не получатеся
 
ams(
 
"push %%rbp\t\n'
"mov %%rsp, %%rbp\t\n"
 
 
 
sub $40, %%rsp// хочу выдилить в стеке место под массив
 
не получается скажите пожалуйста почему?
);
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2019, 19:04
Ответы с готовыми решениями:

Стандартный backtrace Linux, не полностью трассирует стек
Из-за чего стандартный backtrace Linux, определенный в #include execinfo.hтрассирует не весь стек, а только первую и последнюю функцию? Что...

Клиент-сервер: ошибка сегментирования (стек памяти сброшен на диск)
Здравствуйте. Пишу небольшой клиент-сервер. По заданию клиент посылает на сервер число, а сервер возвращает сумму всех чисел, переданных...

Как создать структуру данных "стек"?
подскажите как создать в cu стек? на с++ делал так #include <iostream> #include <stack> using namespace...

25
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
27.11.2019, 07:43
Студворк — интернет-сервис помощи студентам
Там же у Вас printf() вывела оба числа, которые Вы просили
https://www.cyberforum.ru/post14031716.html
Цитата Сообщение от politoto Посмотреть сообщение
Continuing.
333
666
Добавлено через 2 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
мы можем на Ассемблер Gas создать пустую строку и поместить в нее уже в ходе программы число?
А на Си можем?
Если можем, то, раз gas позволил это сделать gcc, то позволит это сделать и нам.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
27.11.2019, 08:27  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Там же у Вас printf() вывела оба числа, которые Вы просили
https://www.cyberforum.ru/post14031716.html

в том то и дело, что выводит. ты так думаешь. но только затронешь стек..........
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
27.11.2019, 09:39
Но printf() перед вызовом других функции выделила в стеке для собственных нужд место, заодно с выравниванием
стека на требуемую ABI 16-байтную границу. И никто к ней туда не лезет.
А начало Вашего массива наложилось на конец этой области.

Assembler
1
2
3
4
5
6
7
__printf:
endbr64 
sub    $0xd8,%rsp ;/* RSP -= 216; выделила место  */
mov    %rdi,%r10
mov    %rsi,0x28(%rsp)  /* сохраняет туда всё, что хочет  */
mov    %rdx,0x30(%rsp)
mov    %rcx,0x38(%rsp)
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
27.11.2019, 13:53  [ТС]
можно обойтись и без выравнивания, как я понял.
Assembler
1
jmp printf
как это работает только не пойму. Вы знаете что-нубудь об этом? то есть call printf заменяют jmp printf

Добавлено через 2 минуты
Цитата Сообщение от politoto Посмотреть сообщение
А начало Вашего массива наложилось на конец этой области.
значит нужна была какая-то прослойка между printf и началом моего массива? наверное просто нужно было запихнуть перед массивом в стек какой-нубудь 16 битный регистр?
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
03.03.2020, 15:25  [ТС]
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.section .bss
fres:
.space 4
 
.section .data
ft: .asciz "%d\n"
 
 
.section .text
 
.global fact
fact:
 
push %rbp
mov %rsp, %rbp
subq $16, %rsp
mov %rdi, -8(%rbp)
cmp $0, -8(%rbp)
jne  dw
mov $1, %eax
jmp f
 
dw:
 
mov -8(%rbp), %rax
dec %rax
mov %rax, %rdi
 
call fact
//imul -8(%rbp), %rax
mov -8(%rbp), %rbx
mul %rbx
mov %rax, (fres)
 
f:
leave
ret
 
 
.global main
main:
push %rbp
mov %rsp, %rbp
subq $16, %rsp
mov $6, %rdi
call fact
 
 
mov fres, %rsi
lea ft(%rip), %rdi
mov $0, %rax
call printf
mov $0, %rax
 
 
mov $1, %rax
int $0x80
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
06.03.2020, 05:32
Сработало с первого раза.
Bash
1
make p && ./p
Code
1
2
cc     p.S   -o p
720

Не по теме:

Может, всё-таки в Assembler для linux попросим перенести?


Можно чуть подсократить.

В стандартной библиотеке GNU есть интересная функция backtrace() и backtrace_symbols_fd(), которая пытается показывать текущий стек вызовов.
http://man7.org/linux/man-page... _fd.3.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2020, 05:32

Стек протоколов TCP/IP для сети из трех ПК
Привет, мне нужна помощь! Используя возможности стека протоколов TCP/IP организовать распределѐнную обработку информации не...

создать стек,заполнив числами 1,2,3...n.Посмотреть его содержимое,удалить стек
Всем привет!помогите,пожалуйста!!! создать стек,заполнив числами 1,2,3...n.Посмотреть его содержимое,удалить стек

Стек. Создать случайно генерированный стек и поменять местами первый элемент с i
Как создать случайно генерированный стек (тип элементов CHAR) и поменять местами первый элемент с i (i - вводит пользователь)?

Заполнить очередь и стек и поменять их содержимое местами через дополнительный стек.
Необходимо разработать программу, которая должна : Заполнить очередь и стек и поменять их содержимое местами через дополнительный стек....

Используя стек, описать функцию проверяющую, является ли стек пустым
Используя стек, описать функцию проверяющую, является ли стек пустым


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru