“预期的伪寄存器;发现 R13”错误
Posted
技术标签:
【中文标题】“预期的伪寄存器;发现 R13”错误【英文标题】:"expected pseudo-register; found R13" error 【发布时间】:2022-01-24 04:53:09 【问题描述】:我刚刚用 goland 运行了一个 go 项目,但遇到了错误:
# github.com/choleraehyq/pid
../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:28: expected pseudo-register; found R13
../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:29: expected pseudo-register; found R14
asm: assembly of ../../../.go/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s failed
我对这个错误感到困惑,我不知道该怎么办。我无法通过此错误消息进行一些调试工作,也没有从谷歌获得任何有用的信息。 github.com/choleraehyq/pid
在框架下被引用。
我只想知道发生了什么以及如何解决它。请帮助我,非常感谢。
【问题讨论】:
【参考方案1】:这也发生在我身上。它可能与您的 golang 版本有关;
我把我的golang版本从1.17
改成了1.14
,问题解决了。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 使用 go1.16
而不是 1.17
也为我解决了这个问题。【参考方案2】:
我只想知道发生了什么以及如何解决它。
-
阅读说明。
Stack Overflow: Help: How to create a Minimal, Reproducible Example
-
按照说明进行操作。
例如,
包goidgithub.com/choleraehyq/pid@v0.0.10 以编程方式检索当前 goroutine 的 ID。
.
$ cat pid.go
package main
import (
"fmt"
goid "github.com/choleraehyq/pid"
)
func main()
pid := goid.GetPid()
fmt.Println(pid)
$
.
$ cat go.mod
module example/pid
go 1.17
require github.com/choleraehyq/pid v0.0.10
$
.
$ go version
go version go1.17.5 linux/amd64
$
.
$ go build pid.go && ./pid
# github.com/choleraehyq/pid
../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:28: expected pseudo-register; found R13
../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s:29: expected pseudo-register; found R14
asm: assembly of ../../gopath/pkg/mod/github.com/choleraehyq/pid@v0.0.10/pid_go1.5_amd64.s failed
$
升级到最新版本。
.
$ go get -u github.com/choleraehyq/pid
go: downloading github.com/choleraehyq/pid v0.0.13
go: upgraded github.com/choleraehyq/pid v0.0.10 => v0.0.13
$
.
$ cat go.mod
module example/pid
go 1.17
require github.com/choleraehyq/pid v0.0.13
$
.
$ go build pid.go && ./pid
1
$
避免使用旧的、过时的和不受支持的软件版本。
更新:
来自 OP 的评论:
谢谢。原始项目是一个大项目,具有很深的依赖关系。我发现我需要在项目的go.mod
中添加github.com/choleraehyq/pid v0.0.13 // indirect
。 – sh1yu
【讨论】:
非常感谢!事实上,原来的项目是一个大项目,并且有很深的依赖关系。首先我不知道如何升级依赖的版本,最后我发现它只需要在项目的go.mod中添加github.com/choleraehyq/pid v0.0.13 // indirect
即可。
@rocka2q 您的大部分答案都不是实际答案。如果您删除“课程”并将答案保留为实际答案,那将是最好的。可以在 OP 上的 cmets 中教授课程
@Cjmarkham:Stack Overflow cmets 是暂时的。添加 OP 的评论为未来的读者留下了答案中的最终解决方案。 Stack Overflow 的主要目的是收集有用的、可搜索的问答。
我看不出评论比答案更短暂...
@Cjmarkham:OP 询问“知道发生了什么以及如何解决它。”我解释了我是如何发现这个问题的:“授人以鱼,你养他一天;授人以渔,你养他一辈子。” Stack Overflow 是一个学习网站。以上是关于“预期的伪寄存器;发现 R13”错误的主要内容,如果未能解决你的问题,请参考以下文章
将变量与寄存器一起使用:错误 A2022:指令操作数必须相同大小
错误 C2403 使用内联 x86 C++ 程序集将寄存器内容移动到变量
VHDL 代码错误:“错误 (10818):无法在 <location> 推断 <name> 的寄存器,因为它没有在时钟沿之外保持其值”