view nasmbuild/nasm-2.13rc9/ndisasm.txt @ 10843:2d5ba2d44680

<Jafet> le/rn double dactyl//Curious spurious verse form, ostensibly catchy to hear but herculean to write. Sadly its bent on the sesquipedalian makes double dactyls pretentious and trite.
author HackBot
date Fri, 28 Apr 2017 02:49:16 +0000
parents 587a0a262d22
children
line wrap: on
line source

ndisasm(1)
==========
:doctype:	manpage
:man source:	NASM
:man manual:	The Netwide Assembler Project

NAME
----
ndisasm - the Netwide Disassembler, an 80x86 binary file disassembler

SYNOPSIS
--------
*ndisasm* [ *-o* origin ] [ *-s* sync-point [...]] [ *-a* | *-i* ]
	[ *-b* bits ] [ *-u* ] [ *-e* hdrlen ] [ *-p* vendor ]
	[ *-k* offset,length [...]] infile

DESCRIPTION
-----------
The *ndisasm* command generates a disassembly listing of the binary file
infile and directs it to stdout.

OPTIONS
-------
*-h*::
	Causes *ndisasm* to exit immediately, after giving a summary
	of its invocation options.

*-r*|*-v*::
	Causes *ndisasm* to exit immediately, after displaying its
	version number.

*-o* 'origin'::
	Specifies the notional load address for the file. This
	option causes *ndisasm* to get the addresses it lists
	down the left hand margin, and the target addresses
	of PC-relative jumps and calls, right.

*-s* 'sync-point'::
	Manually specifies a synchronisation address, such that
	*ndisasm* will not output any machine instruction which
	encompasses bytes on both sides of the address. Hence
	the instruction which starts at that address will be
	correctly disassembled.

*-e* 'hdrlen'::
	Specifies a number of bytes to discard from the beginning
	of the file before starting disassembly. This does not
	count towards the calculation of the disassembly offset:
	the first 'disassembled' instruction will be shown starting
	at the given load address.

*-k* 'offset,length'::
	Specifies that 'length' bytes, starting from disassembly
	offset 'offset', should be skipped over without generating
	any output. The skipped bytes still count towards the
	calculation of the disassembly offset.

*-a*|*-i*::
	Enables automatic (or intelligent) sync mode, in which
	*ndisasm* will attempt to guess where synchronisation should
	be performed, by means of examining the target addresses
	of the relative jumps and calls it disassembles.

*-b* 'bits'::
	Specifies 16-, 32- or 64-bit mode. The default is 16-bit
	mode.

*-u*::
	Specifies 32-bit mode, more compactly than using `-b 32'.

*-p* 'vendor'::
	Prefers instructions as defined by 'vendor' in case of
	a conflict. Known 'vendor' names include *intel*, *amd*,
	*cyrix*, and *idt*. The default is *intel*.

RESTRICTIONS
------------
*ndisasm* only disassembles binary files: it has no understanding of
the header information present in object or executable files.
If you want to disassemble an object file, you should probably
be using *objdump*(1).

Auto-sync mode won't necessarily cure all your synchronisation
problems: a sync marker can only be placed automatically if a
jump or call instruction is found to refer to it 'before'
*ndisasm* actually disassembles that part of the code. Also,
if spurious jumps or calls result from disassembling
non-machine-code data, sync markers may get placed in strange
places. Feel free to turn auto-sync off and go back to doing
it manually if necessary.

SEE ALSO
--------
*objdump*(1)