assembly - nasm 代码调用 scanf 崩溃取决于堆栈大小
问题描述
以下代码崩溃。buf i 常量 stack_size 更改为 40 或 56,不会发生崩溃。为什么是这样?
; nasm -f elf64 t.asm && gcc -no-pie t.o
section .text
global main
extern printf, scanf
stack_size equ 48
main:
sub rsp, stack_size
lea rdi, [rel fmt_str]
mov rsi, rsp
xor eax, eax
call scanf
add rsp, stack_size
ret
fmt_str: db "%ld",0
解决方案
推荐阅读
- php - PHP嵌套函数逻辑错误-用WPML翻译functions.php
- typescript - 在 Jest 中,如何仅在特定测试中模拟外部模块?
- c# - Azure API 应用程序连接到本地文件共享
- python - 将 VBA 代码转换为 python 代码以便于集成
- ruby - 如何使用自定义按钮从 Cloudforms 中的 VM 中删除磁盘?
- ruby-on-rails - NameError - 未初始化的常量 ContactController
- swift - Swift 5 转换后允许任意负载不起作用
- c# - 我不太确定 math.ceiling 在这里做什么
- javascript - 如何通过 Chrome 扩展内容脚本使用“playVideoById()”?
- javascript - 什么是 TypeScript 中用于读取/获取数据的 *NgFor