0

我在尝试运行简单的汇编代码时遇到分段错误....基本上我想一直要求输入表单键盘,直到按下返回键,我知道是什么原因造成的,因为我是气体装配的新手,你能帮我吗?

.section .data
    num:
       .int
.section .text
   .global _start

    _start: 
    leggi:
          movl $3, %eax
          movl $0, %ebx
          leal num, %ecx
          movl $1, %edx
          int $0x80
          movl $10,%edx
          cmp %edx,num
          jne leggi

          movl $1, %eax
          xorl %ebx,%ebx
          int $0x80
4

1 回答 1

0

我的印象是.int允许您指定零个或多个表达式,并且它会为每个表达式创建空间。

如果没有表达式,它可能会分配零空间,这可能会给您带来问题。可能,对于一个空data部分,您将写入一部分的第一个字节,这很可能是写保护text部分。

看看结果输出,看看它在做什么。如果这问题所在,您应该能够通过以下方式解决它:

.int 0

但是,您可能还需要注意您正在读取字节但在代码中使用 int 大小的数据这一事实。我可能会使用.byte自己。

于 2013-05-24T09:10:12.173 回答