go - 特定于模型的寄存器?
问题描述
我正在学习如何用 Go 编写程序集,我对程序集不是很熟悉。我试图了解如何从特定于模型的寄存器中读取数据,但遇到了错误。
// main.go
package main
import (
"fmt"
)
func readmsr(register int64) int64
func main() {
fmt.Println(readmsr(0xC0000080))
}
// intrinsics_amd64.s
// readmsr(register int64) int64
TEXT ·readmsr(SB), $0-24
RDMSR register+0(FP), AX
MOVQ AX, ret+16(FP)
RET
当我尝试编译代码时,出现以下错误:
go build -v .
_/gopath/go/workspace/temp
# _/gopath/go/workspace/temp
asm: invalid instruction: 00000 (/gopath/go/workspace/temp/instrinsics_amd64.s:3) RDMSR register+8(FP), AX
asm: assembly failed
查看x86asm 包中的操作码,它看起来像是RDMSR
受支持的指令,至少据我所知。
我对汇编不是很熟悉,所以我不确定我做错的是汇编错误还是 Go 错误。你能帮我理解我做错了什么以及为什么错了吗?
解决方案
推荐阅读
- php - 如何从一个表中获取值并在另一表中插入相同的值
- reactjs - Redux saga:如何从另一个未启动的任务中取消一项任务?
- c - 如何通过在linux内核中创建文件来访问物理内存的值并存储该值
- html - 包含文本表单和文件选择的 html 换行
- netlify - 使用 Netlify CMS 为 Hugo 制作多语言内容文件夹模板
- python - NameError: name 'client' is not defined 我该如何解决这个问题?(不和谐机器人)
- android - 如何在android中处理已弃用的Handler
- html - 为什么其他检查的无线电输入和标签不起作用?
- javascript - 光滑的滑块响应问题
- powershell - Powershell:invoke-item在不调用并且涉及星号时不会产生错误