为SPARC体系结构配置GCC
我一直在尝试编译一个SPARC程序。只是一个简单的例子,直接从书中摘取:SPARC体系结构、汇编语言编程和C:第二版。然而,我得到一个错误,使我相信SPARC在我的计算机上还没有正确配置。这是在Windows计算机上为SPARC体系结构配置GCC,gcc,assembly,sparc,Gcc,Assembly,Sparc,我一直在尝试编译一个SPARC程序。只是一个简单的例子,直接从书中摘取:SPARC体系结构、汇编语言编程和C:第二版。然而,我得到一个错误,使我相信SPARC在我的计算机上还没有正确配置。这是在Windows计算机上 .global main main: save %sp, 96, %sp mov 9, %l0 sub %l0, 1, %o0 sub %l0, 7, %o1 c
.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的过程是:
<> >唯一的区别是,不是为语言指定C,C++,而是使用了所有的。
谢谢你说得对,你的gcc不是为SPARC设置的。如果您运行的是Windows,那么您运行的计算机上的ISA不是SPARC,很可能是x86。ISA是硬件接口,不能通过软件升级进行更改 要编译SPARC程序,您需要重新构建gcc,因为SPARC交叉编译器主机和目标ISA是不同的。从源代码构建时,这是通过-target=标志完成的。为linux构建交叉编译器类似于cygwin
构建交叉编译器后,要执行它,需要一种方法来模拟SPARC处理器。使用类似这样的系统将可以工作。为Sparc V8目标编译简单程序并在Qemu上运行它们。本教程包括获取交叉编译器的步骤。这对您使用Linux有很大帮助。实际上,这只是为了方便访问。我仍然可以使用SSH访问服务器,但这要容易得多,而且现在已经学会了如何使用它。谢谢