Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为SPARC体系结构配置GCC_Gcc_Assembly_Sparc - Fatal编程技术网

为SPARC体系结构配置GCC

为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

我一直在尝试编译一个SPARC程序。只是一个简单的例子,直接从书中摘取:SPARC体系结构、汇编语言编程和C:第二版。然而,我得到一个错误,使我相信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的过程是:

<> >唯一的区别是,不是为语言指定C,C++,而是使用了所有的。
谢谢

你说得对,你的gcc不是为SPARC设置的。如果您运行的是Windows,那么您运行的计算机上的ISA不是SPARC,很可能是x86。ISA是硬件接口,不能通过软件升级进行更改

要编译SPARC程序,您需要重新构建gcc,因为SPARC交叉编译器主机和目标ISA是不同的。从源代码构建时,这是通过-target=标志完成的。为linux构建交叉编译器类似于cygwin


构建交叉编译器后,要执行它,需要一种方法来模拟SPARC处理器。使用类似这样的系统将可以工作。

为Sparc V8目标编译简单程序并在Qemu上运行它们。本教程包括获取交叉编译器的步骤。这对您使用Linux有很大帮助。实际上,这只是为了方便访问。我仍然可以使用SSH访问服务器,但这要容易得多,而且现在已经学会了如何使用它。谢谢