JavaScript is required to for searching.
Skip Navigation Links
Exit Print View
x86 Assembly Language Reference Manual     Oracle Solaris 11.1 Information Library
search filter icon
search icon

Document Information

Preface

1.  Overview of the Oracle Solaris x86 Assembler

2.  Oracle Solaris x86 Assembly Language Syntax

Lexical Conventions

Statements

Comments

Labels

Symbolic Labels

Numeric Labels

Tokens

Identifiers

Keywords

Numerical Constants

Integer Constants

Floating Point Constants

String Constants

Operators

Instructions, Operands, and Addressing

Instructions

Operands

Assembler Directives

3.  Instruction Set Mapping

A.  Using the Assembler Command Line

Index

Instructions, Operands, and Addressing

Instructions are operations performed by the CPU. Operands are entities operated upon by the instruction. Addresses are the locations in memory of specified data.

Instructions

An instruction is a statement that is executed at runtime. An x86 instruction statement can consist of four parts:

See Statements for the description of labels and comments.

The terms instruction and mnemonic are used interchangeably in this document to refer to the names of x86 instructions. Although the term opcode is sometimes used as a synonym for instruction, this document reserves the term opcode for the hexadecimal representation of the instruction value.

For most instructions, the Oracle Solaris x86 assembler mnemonics are the same as the Intel or AMD mnemonics. However, the Oracle Solaris x86 mnemonics might appear to be different because the Oracle Solaris mnemonics are suffixed with a one-character modifier that specifies the size of the instruction operands. That is, the Oracle Solaris assembler derives its operand type information from the instruction name and the suffix. If a mnemonic is specified with no type suffix, the operand type defaults to long. Possible operand types and their instruction suffixes are:

b

Byte (8–bit)

w

Word (16–bit)

l

Long (32–bit) (default)

q

Quadword (64–bit)

The assembler recognizes the following suffixes for x87 floating-point instructions:

[no suffix]

Instruction operands are registers only

l (“long”)

Instruction operands are 64–bit

s (“short”)

Instruction operands are 32–bit

See Chapter 3, Instruction Set Mapping for a mapping between Oracle Solaris x86 assembly language mnemonics and the equivalent Intel or AMD mnemonics.

Operands

An x86 instruction can have zero to three operands. Operands are separated by commas (,) (ASCII 0x2C). For instructions with two operands, the first (lefthand) operand is the source operand, and the second (righthand) operand is the destination operand (that is, sourcedestination).


Note - The Intel assembler uses the opposite order (destinationsource) for operands.


Operands can be immediate (that is, constant expressions that evaluate to an inline value), register (a value in the processor number registers), or memory (a value stored in memory). An indirect operand contains the address of the actual operand value. Indirect operands are specified by prefixing the operand with an asterisk (*) (ASCII 0x2A). Only jump and call instructions can use indirect operands.