AT&T汇编链接报错:未定义引用$label问题求助
问题解决:AT&T汇编链接时的未定义引用错误
问题根源
在AT&T汇编语法中,$是立即数前缀,用于表示直接数值(如$100代表立即数100)。你在people数组中使用$john_silver的写法,会让汇编器将其解析为对名为john_silver的立即数常量的引用,而非字符串标签的内存地址——但你并未定义这类常量,因此链接器会抛出未定义引用错误。
修正方法
将people数组中所有字符串标签前的$符号移除,直接使用标签名即可存储其内存地址。修正后的people数组代码如下:
people: .quad john_silver, 200, 10, 2, 74, 20 .quad billy_bones, 280, 14, 2, 74, 44 .quad black_beard, 150, 8, 1, 68, 30 .quad dave_jones, 250, 14, 3, 75, 24 .quad jack_the_sparrow, 250, 10, 2, 70, 11 .quad genry_morgan, 180, 11, 5, 69, 65
验证
重新汇编person-data-with-names-pointer.s,再执行原链接命令,未定义引用的错误即可解决。
内容的提问来源于stack exchange,提问作者Serafim
相关产品推荐
相关产品推荐

