github.com/gocuntian/go@v0.0.0-20160610041250-fee02d270bf8/src/cmd/compile/internal/x86/galign.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package x86 6 7 import ( 8 "cmd/compile/internal/gc" 9 "cmd/internal/obj" 10 "cmd/internal/obj/x86" 11 "fmt" 12 "os" 13 ) 14 15 func betypeinit() { 16 } 17 18 func Main() { 19 gc.Thearch.LinkArch = &x86.Link386 20 gc.Thearch.REGSP = x86.REGSP 21 gc.Thearch.REGCTXT = x86.REGCTXT 22 gc.Thearch.REGCALLX = x86.REG_BX 23 gc.Thearch.REGCALLX2 = x86.REG_AX 24 gc.Thearch.REGRETURN = x86.REG_AX 25 gc.Thearch.REGMIN = x86.REG_AX 26 gc.Thearch.REGMAX = x86.REG_DI 27 switch v := obj.Getgo386(); v { 28 case "387": 29 gc.Thearch.FREGMIN = x86.REG_F0 30 gc.Thearch.FREGMAX = x86.REG_F7 31 gc.Thearch.Use387 = true 32 case "sse2": 33 gc.Thearch.FREGMIN = x86.REG_X0 34 gc.Thearch.FREGMAX = x86.REG_X7 35 default: 36 fmt.Fprintf(os.Stderr, "unsupported setting GO386=%s\n", v) 37 gc.Exit(1) 38 } 39 gc.Thearch.MAXWIDTH = (1 << 32) - 1 40 gc.Thearch.ReservedRegs = resvd 41 42 gc.Thearch.Betypeinit = betypeinit 43 gc.Thearch.Bgen_float = bgen_float 44 gc.Thearch.Cgen64 = cgen64 45 gc.Thearch.Cgen_bmul = cgen_bmul 46 gc.Thearch.Cgen_float = cgen_float 47 gc.Thearch.Cgen_hmul = cgen_hmul 48 gc.Thearch.Cgen_shift = cgen_shift 49 gc.Thearch.Clearfat = clearfat 50 gc.Thearch.Cmp64 = cmp64 51 gc.Thearch.Defframe = defframe 52 gc.Thearch.Dodiv = cgen_div 53 gc.Thearch.Excise = excise 54 gc.Thearch.Expandchecks = expandchecks 55 gc.Thearch.Getg = getg 56 gc.Thearch.Gins = gins 57 gc.Thearch.Ginscmp = ginscmp 58 gc.Thearch.Ginscon = ginscon 59 gc.Thearch.Ginsnop = ginsnop 60 gc.Thearch.Gmove = gmove 61 gc.Thearch.Igenindex = igenindex 62 gc.Thearch.Peep = peep 63 gc.Thearch.Proginfo = proginfo 64 gc.Thearch.Regtyp = regtyp 65 gc.Thearch.Sameaddr = sameaddr 66 gc.Thearch.Smallindir = smallindir 67 gc.Thearch.Stackaddr = stackaddr 68 gc.Thearch.Blockcopy = blockcopy 69 gc.Thearch.Sudoaddable = sudoaddable 70 gc.Thearch.Sudoclean = sudoclean 71 gc.Thearch.Excludedregs = excludedregs 72 gc.Thearch.RtoB = RtoB 73 gc.Thearch.FtoB = FtoB 74 gc.Thearch.BtoR = BtoR 75 gc.Thearch.BtoF = BtoF 76 gc.Thearch.Optoas = optoas 77 gc.Thearch.Doregbits = doregbits 78 gc.Thearch.Regnames = regnames 79 80 gc.Main() 81 gc.Exit(0) 82 }