【发布时间】:2015-01-27 01:43:55
【问题描述】:
我一直在尝试编译一个 SPARC 程序。只是直接从书中摘录的一个简单的:SPARC Architecture, Assembly Language Programming, and C: Second Edition。但是,我收到一个错误,让我相信我的计算机上尚未正确配置 SPARC。这是在 Windows 机器上。
.global main
main:
save %sp, 96, %sp
mov 9, %l0
sub %l0, 1, %o0
sub %l0, 7, %o1
call .mul
nop
sub %l0, 11, %o1
call .div
mov %o0, %l1
mov 1, %g1
ta 0
我通过 Cygwin 1.7.5 安装了 GCC 4.9.2。
尝试通过 GCC 编译时出现以下错误
C:\Users\Matt\Desktop>gcc expr.s -o expr
expr.s: Assembler messages:
expr.s: Warning: end of file not at end of a line; newline inserted
expr.s:3: Error: no such instruction: `save %sp,96,%sp'
expr.s:4: Error: bad register name `%l0'
expr.s:5: Error: bad register name `%l0'
expr.s:6: Error: bad register name `%l0'
expr.s:9: Error: bad register name `%l0'
expr.s:11: Error: bad register name `%o0'
expr.s:13: Error: bad register name `%g1'
expr.s:14: Error: no such instruction: `ta 0'
与不同的架构相比,几乎所有 SPARC 的独特之处都是“错误”。
所以,我尝试专门为程序设置架构:
gcc -march=sparc expr.s -o expr
这仍然会引发错误,这使我相信我当前的配置未针对 SPARC 进行设置。
我用来设置 GCC 的过程是:here
唯一的区别是我没有为语言指定c,c++,而是使用all。
谢谢
【问题讨论】: