Go语言是否与CPU有关?
我知道它支持x86、x86_64和ARM。它是否有一些CPU相关的代码,比如汇编代码块?
PS 我表达得不够清楚。Go语言的实现是否与CPU有关?
我不希望在我的程序中添加ARM汇编代码。我想知道是否只能在x86(_64)和ARM上编译Go程序,而所有其他平台都不受支持。
Go语言是否与CPU有关?
我知道它支持x86、x86_64和ARM。它是否有一些CPU相关的代码,比如汇编代码块?
PS 我表达得不够清楚。Go语言的实现是否与CPU有关?
我不希望在我的程序中添加ARM汇编代码。我想知道是否只能在x86(_64)和ARM上编译Go程序,而所有其他平台都不受支持。
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语言对于不同操作系统和架构的交叉编译有出色的支持, 因此在大多数情况下,你不需要一堆运行不同操作系统的机器(虚拟或实际)来为这些目标编译程序。
int
类型可以是64/32位宽。或者你是在谈论为了效率而编写的汇编函数(例如RC4)?你能举个例子说明你所说的CPU依赖性吗? - loreb