lua虚拟机字节码修改_查看 Golang、Lua、JS、Rust、Python等语言生成的汇编代码

为什么写这篇文章?

昨天在技术群上,有人问了个问题:

如果一个结构体, 只是读里面的成员, 在 golang 里面传值的时候, 不传递指针, golang 编译器会帮你优化成 const & 么?

随便一猜:golang 肯定是直接 copy 整个结构体。

为了确认是否真的是这样,最直白的方式就是直接看 golang 生成的汇编代码。

从图中的汇编代码中,我们可以清楚的看到:golang 的确是执行了完整的结构体 copy 。

4648dab445c3487f4dc440796cb653db.png

然后群友给了这样的反馈...

76337ecf5e3d6f401556a4ca4069bb8e.png

看着自己日益升高的发际线,我陷入了沉思...


好了,进入正题。

本文将以 1 + ... + 100 的代码为例,介绍以下几种语言查看“汇编代码”的方式。
(这里的“汇编代码”只是个统称,大家不用太计较)

  1. Golang
  2. Lua
  3. JavaScript(V8)
  4. Rust
  5. Python
  6. 等等 ...

1. Golang 生成汇编代码

源码

package main
func main(){
	var sum = 0
	for i:=1 ; i <= 100; i++ {
		sum = sum + i
	}
}

查看方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值