Go语言CPU是否依赖?

时间:2014-01-03 12:48:56

标签: go cpu cpu-architecture

Go语言是否依赖CPU?

我知道它支持x86,x86_64和ARM。它是否有一些CPU依赖代码,如汇编程序代码块?

PS 我不太清楚。 Go语言实现是否依赖于CPU?

我不希望在程序中添加ARM汇编代码。我想知道是否可以在x86(_64)和ARM上编译Go程序,并且不支持所有其他平台。

1 个答案:

答案 0 :(得分:11)

Go已编译,因此最终结果确实是(特定于CPU的)机器代码。

$ echo 'package main\nfunc main(){ println("hello world") }' > hello.go
$ go build hello.go
$ objdump -D hello | head

hello:     file format elf32-i386


Disassembly of section .text:

08048c00 <main.main>:
 8048c00:   65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
 8048c07:   8b 49 f8                mov    -0x8(%ecx),%ecx
 8048c0a:   3b 21                   cmp    (%ecx),%esp

因此,您将无法仅为ARM编译可执行文件,并在x86上运行它。

尽管如此,Go还有针对不同操作系统和体系结构的excellent support for cross-compiling程序,因此在大多数情况下,您不需要运行不同操作系统的一堆机器(虚拟或实际)来为这些目标编译程序。 / p>