// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. #include #include #include "gg.h" int thechar = '6'; char* thestring = "amd64"; LinkArch* thelinkarch = &linkamd64; void linkarchinit(void) { if(strcmp(getgoarch(), "amd64p32") == 0) thelinkarch = &linkamd64p32; } vlong MAXWIDTH = 1LL<<50; int addptr = AADDQ; int movptr = AMOVQ; int leaptr = ALEAQ; int cmpptr = ACMPQ; /* * go declares several platform-specific type aliases: * int, uint, float, and uintptr */ Typedef typedefs[] = { "int", TINT, TINT64, "uint", TUINT, TUINT64, "uintptr", TUINTPTR, TUINT64, 0 }; void betypeinit(void) { widthptr = 8; widthint = 8; widthreg = 8; if(strcmp(getgoarch(), "amd64p32") == 0) { widthptr = 4; widthint = 4; addptr = AADDL; movptr = AMOVL; leaptr = ALEAL; cmpptr = ACMPL; typedefs[0].sameas = TINT32; typedefs[1].sameas = TUINT32; typedefs[2].sameas = TUINT32; } zprog.link = P; zprog.as = AGOK; zprog.from.type = D_NONE; zprog.from.index = D_NONE; zprog.from.scale = 0; zprog.to = zprog.from; listinit6(); }