是否依赖于 Go 语言 CPU



Go 语言是否依赖于 CPU?

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

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

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

Go 是

编译的,所以最终结果确实是(特定于 CPU 的)机器代码。

$ echo 'package mainnfunc 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 对针对不同操作系统和架构的交叉编译程序提供了出色的支持,因此在大多数情况下,您不需要一堆运行不同操作系统的机器(虚拟或真实)来为这些目标编译程序。

最新更新