部分.data中的两个元素

时间:2015-05-09 13:11:18

标签: nasm

我一直在尝试从asm中的libc执行puts函数,我一直在努力解决这个问题:如果传递给puts的参数为null,那么它应该将“(null)\ n”写入标准输出,否则它应该写出字符串+ \ n。

起初我试图在我的.data部分中声明两个元素:

launchd

它没有打印任何错误,但只打印了null_msg。无论如何,我通过使用null_msg中的\ n找到了一个解决方法,但我仍然很好奇。我正在使用2015年3月10日编译的NASM版本2.11.08

1 个答案:

答案 0 :(得分:0)

2.11.08中存在一个已知的错误(herehere)与数据部分中的多个条目相关的相对寻址,至少在OSX Yosemite上(我收集了你&#39) ;重新使用OSX,因为您的syscall号码使用OSX类 - 系统调用'标准')。

我尝试使用早期版本的nasm测试相同的代码,如果有效,可能就是您的问题所在。

查看生成的汇编程序代码以查看实际生成的内容可能也是值得的,因为(不幸的是,您的源代码)是CPU的意思正在执行。我看到的一个症状是它在加载数据项或地址时使用了不正确的固定偏移量。