assembly - 为什么我在这个程序集打印功能中出现分段错误
问题描述
所以我正在尝试制作一个简单的汇编程序,我遇到了一个段错误,打印功能确实打印出了我想要的东西,但是它崩溃了。
测试.s:
.global _start
msg1:
.string "Hello, World!\n"
msg2:
.string "Goodbye, World !\n"
_start:
PUSHQ %rbp
MOVQ %rsp, %rbp
MOVQ $msg1, %rax
CALL print
MOVQ $msg2, %rax
CALL print
POPQ %rbp
RET
# void print(char * x[%rax])
print:
print_init:
PUSHQ %rbp
MOVQ %rsp, %rbp
SUBQ $32, %rsp
MOVQ %rax, -32(%rbp)
print_loop:
MOVL $1, %edx
MOVL -32(%rbp), %ecx
CMPB $0, (%ecx)
JE print_exit
MOVL $1, %ebx
MOVL $4, %eax
INT $0x80
ADDQ $1, -32(%rbp)
JMP print_loop
print_exit:
POPQ %rbp
RET
感谢您的帮助!
解决方案
推荐阅读
- tensorflow - 如何在 tensorflow2.0 中导入“tf.contrib.seq2seq.dynamic_decoder”?
- node.js - 一个 GET 请求,但被 express、node.js 中的多个 .get 函数捕获
- sql - 根据条件设置组中一条记录的值 - SQL Server
- python - SMTPAuthenticationError:(535,b'5.7.8 Django 生产中不接受用户名和密码?
- ios - +[FIRAnalytics setAnalyticsCollectionEnabled:]:发送到类的无法识别的选择器
- node.js - 全栈 javascript 应用程序共享接口
- java - 如何理解一个网站正在使用 gzip 压缩?
- opencv - 为什么我的视差图的边缘这么肥?
- sql - 如何在sql中获取日期范围内的数据
- java - 复制到剪贴板的 JavaFX 字符串以空字符 '\u0000' 开头被截断