// Copyright 2015 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.

/*
Asm, typically invoked as ``go tool asm'', assembles the source file into an object
file named for the basename of the argument source file with a .o suffix. The
object file can then be combined with other objects into a package archive.

Command Line

Usage:

	go tool asm [flags] file

The specified file must be a Go assembly file.
The same assembler is used for all target operating systems and architectures.
The GOOS and GOARCH environment variables set the desired target.

Flags:

	-D value
		predefined symbol with optional simple value -D=identifer=value;
		can be set multiple times
	-I value
		include directory; can be set multiple times
	-S	print assembly and machine code
	-debug
		dump instructions as they are parsed
	-dynlink
		support references to Go symbols defined in other shared libraries
	-o string
		output file; default foo.o for /a/b/c/foo.s
	-shared
		generate code that can be linked into a shared library
	-trimpath string
		remove prefix from recorded source file paths

Input language:

The assembler uses mostly the same syntax for all architectures,
the main variation having to do with addressing modes. Input is
run through a simplified C preprocessor that implements #include,
#define, #ifdef/endif, but not #if or ##.

For more information, see https://golang.org/doc/asm.
*/
package main
