1 Star 1 Fork 1

U语言组织 / U语言

forked from 秋来冬风 / U语言 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Text.go 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
秋来冬风 提交于 2023-07-27 21:41 . 秋来冬风:优化处理变量
package amd64
import (
"gitee.com/u-language/u-language/pkg/ast"
)
// 设置栈中变量
func StackSetVar(to *AstToAsm, offset int64, name string, value string, sbt *ast.Sbt, vreg *VReg) TextNode {
var ret = make([]TextNode, 0, 2)
info := sbt.Have(name)
switch info.Type() {
case "int":
ret = append(ret, NewSrcNumDestRegOffset(RBP, value, -offset, MOV))
case "float":
data := NewAutoData(value, 4)
to.Datas.Add(data)
xmm1 := vreg.GetSSEReg()
ret = append(ret, NewSrcMemDestReg(xmm1, data.Name, MOVSS))
ret = append(ret, NewSrcRegDestRegOffset(RBP, xmm1, -offset, MOVSS))
}
return NewStackVarMovKind(ret)
}
func SetVar(to *AstToAsm, name, value string, sbt *ast.Sbt, vreg *VReg) TextNode {
var ret = make([]TextNode, 0, 2)
info := sbt.Have(name)
switch info.Type() {
case "int":
ret = append(ret, NewSrcNumDestMem(name, value, MOV))
case "float":
data := NewAutoData(value, 4)
to.Datas.Add(data)
xmm1 := vreg.GetSSEReg()
ret = append(ret, NewSrcMemDestReg(xmm1, data.Name, MOVSS))
ret = append(ret, NewSrcRegDestMem(name, xmm1, MOVSS))
}
return NewVarMovKind(ret)
}
Go
1
https://gitee.com/u-language/u-language.git
git@gitee.com:u-language/u-language.git
u-language
u-language
U语言
0e42c1326373

搜索帮助