q/src/core/NewFunction.go
2025-03-12 23:15:43 +01:00

44 lines
887 B
Go

package core
import (
"git.urbach.dev/cli/q/src/arm"
"git.urbach.dev/cli/q/src/asm"
"git.urbach.dev/cli/q/src/config"
"git.urbach.dev/cli/q/src/cpu"
"git.urbach.dev/cli/q/src/fs"
"git.urbach.dev/cli/q/src/register"
"git.urbach.dev/cli/q/src/scope"
"git.urbach.dev/cli/q/src/wasm"
"git.urbach.dev/cli/q/src/x86"
)
// NewFunction creates a new function.
func NewFunction(pkg string, name string, file *fs.File) *Function {
var c *cpu.CPU
switch config.TargetArch {
case config.ARM:
c = &arm.CPU
case config.WASM:
c = &wasm.CPU
case config.X86:
c = &x86.CPU
}
return &Function{
Package: pkg,
Name: name,
UniqueName: pkg + "." + name,
File: file,
Machine: register.Machine{
Assembler: asm.Assembler{
Instructions: make([]asm.Instruction, 0, 8),
},
Stack: scope.Stack{
Scopes: []*scope.Scope{{}},
},
CPU: c,
},
}
}