GCC +内联汇编 - 在notl上出现意外的段错误

时间:2011-06-28 06:00:11

标签: c linux gcc inline-assembly

代码:http://paste.pocoo.org/show/422081/(链接缺少404)。

好吧,所以我试图不通用大块的内存,并决定我做了顽固的演员阵容,并认为我下降到内联汇编(我认为它实际上提高了可读性)。我已经设法将这个段错误缩小到一个特定的功能。它位于粘贴的第22行。

但它始终是段错误。如您所见,str作为argv [1]传递。

我可以手动对argv [1](例如argv[1][0] = 'q')进行操作,所以我不完全确定为什么这不起作用,特别是考虑到nots之前它成功运行not8not2。是否有一些我不知道的时髦的事情?这里出了什么问题?

通用代码审查也很好;我是C的新手。

1 个答案:

答案 0 :(得分:2)

您的问题是password变量。您只分配一个元素,然后在password++循环中执行for。因此,第二次进行循环时,你无处可去。

代码显示您使用的概念太复杂了,而不是您现在掌握的概念。

  • 当你做内联汇编程序时 不知道如何处理 指针。
  • 请勿投回malloc
  • unsigned char通常是 正确的类型来检查个人 对象的字节。