Skip to content
/ mcc Public

mcc is a machine code compiler.

License

Notifications You must be signed in to change notification settings

esote/mcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NAME
	mcc - machine code compiler

SYNOPSIS
	mcc [-3hs] [-b addr] [-m memsize] [-o file] [-t addr] file

DESCRIPTION
	mcc is a machine code compiler. It reads binary ASCII text '0' and '1'
	mapping to machine code instructions. All other characters are ignored
	except the comment token ';'. Comments begin with ';' and continue until
	EOL. The -h option enables parsing hexadecimal rather than binary text.

	Use the -o option to specify the output filename. The default is to put
	the executable in a.out.

	Supports little-endian x86-64 and i386 execution environments using the
	System V application binary interface. 64-bit is the default mode,
	32-bit mode is specified with the -3 option.

	When writing to the .bss section, specify the size of memory reserved
	using the -m option. If the size is zero (default), no .bss section will
	be written for the executable.

	In 64-bit mode the .bss and .text sections start at 0x402000 and
	0x401000 respectively, and in 32-bit mode 0x804a000 and 0x8049000
	respectively. Use the -b and -t options to specify custom addresses.

	Program header segment alignment is set to 0x1000 (the page size on most
	systems).

	.bss is aligned to a 16-byte constraint and .text to an 8-byte
	constraint.

	Use the -s option to mark the .text section as writable, allowing
	self-modifying code.

AUTHORS
	mcc was written by Esote.

COPYRIGHT
	Copyright (c) 2019 Esote. There is NO warranty. You may redistribute
	this software under the terms of the GNU Affero General Public License.
	For more information, see the LICENSE file.