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

3.  Instruction Set Mapping

Instruction Overview

General-Purpose Instructions

Data Transfer Instructions

Binary Arithmetic Instructions

Decimal Arithmetic Instructions

Logical Instructions

Shift and Rotate Instructions

Bit and Byte Instructions

Control Transfer Instructions

String Instructions

I/O Instructions

Flag Control (EFLAG) Instructions

Segment Register Instructions

Miscellaneous Instructions

Floating-Point Instructions

Data Transfer Instructions (Floating Point)

Basic Arithmetic Instructions (Floating-Point)

Comparison Instructions (Floating-Point)

Transcendental Instructions (Floating-Point)

Load Constants (Floating-Point) Instructions

Control Instructions (Floating-Point)

SIMD State Management Instructions

MMX Instructions

Data Transfer Instructions (MMX)

Conversion Instructions (MMX)

Packed Arithmetic Instructions (MMX)

Comparison Instructions (MMX)

Logical Instructions (MMX)

Shift and Rotate Instructions (MMX)

State Management Instructions (MMX)

SSE Instructions

SIMD Single-Precision Floating-Point Instructions (SSE)

Data Transfer Instructions (SSE)

Packed Arithmetic Instructions (SSE)

Comparison Instructions (SSE)

Logical Instructions (SSE)

Shuffle and Unpack Instructions (SSE)

Conversion Instructions (SSE)

MXCSR State Management Instructions (SSE)

64-Bit SIMD Integer Instructions (SSE)

Miscellaneous Instructions (SSE)

SSE2 Instructions

SSE2 Packed and Scalar Double-Precision Floating-Point Instructions

SSE2 Data Movement Instructions

SSE2 Packed Arithmetic Instructions

SSE2 Logical Instructions

SSE2 Compare Instructions

SSE2 Shuffle and Unpack Instructions

SSE2 Conversion Instructions

SSE2 Packed Single-Precision Floating-Point Instructions

SSE2 128-Bit SIMD Integer Instructions

SSE2 Miscellaneous Instructions

Operating System Support Instructions

64-Bit AMD Opteron Considerations

A.  Using the Assembler Command Line

Index

Floating-Point Instructions

The floating point instructions operate on floating-point, integer, and binary coded decimal (BCD) operands.

Data Transfer Instructions (Floating Point)

The data transfer instructions move floating-point, integer, and BCD values between memory and the floating point registers.

Table 3-13 Data Transfer Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
fbld
FBLD
load BCD
fbstp
FBSTP
store BCD and pop
fcmovb
FCMOVB
floating-point conditional move if below
fcmovbe
FCMOVBE
floating-point conditional move if below or equal
fcmove
FCMOVE
floating-point conditional move if equal
fcmovnb
FCMOVNB
floating-point conditional move if not below
fcmovnbe
FCMOVNBE
floating-point conditional move if not below or equal
fcmovne
FCMOVNE
floating-point conditional move if not equal
fcmovnu
FCMOVNU
floating-point conditional move if unordered
fcmovu
FCMOVU
floating-point conditional move if unordered
fild
FILD
load integer
fist
FIST
store integer
fistp
FISTP
store integer and pop
fld
FLD
load floating-point value
fst
FST
store floating-point value
fstp
FSTP
store floating-point value and pop
fxch
FXCH
exchange registers

Basic Arithmetic Instructions (Floating-Point)

The basic arithmetic instructions perform basic arithmetic operations on floating-point and integer operands.

Table 3-14 Basic Arithmetic Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
fabs
FABS
absolute value
fadd
FADD
add floating-point
faddp
FADDP
add floating-point and pop
fchs
FCHS
change sign
fdiv
FDIV
divide floating-point
fdivp
FDIVP
divide floating-point and pop
fdivr
FDIVR
divide floating-point reverse
fdivrp
FDIVRP
divide floating-point reverse and pop
fiadd
FIADD
add integer
fidiv
FIDIV
divide integer
fidivr
FIDIVR
divide integer reverse
fimul
FIMUL
multiply integer
fisub
FISUB
subtract integer
fisubr
FISUBR
subtract integer reverse
fmul
FMUL
multiply floating-point
fmulp
FMULP
multiply floating-point and pop
fprem
FPREM
partial remainder
fprem1
FPREM1
IEEE partial remainder
frndint
FRNDINT
round to integer
fscale
FSCALE
scale by power of two
fsqrt
FSQRT
square root
fsub
FSUB
subtract floating-point
fsubp
FSUBP
subtract floating-point and pop
fsubr
FSUBR
subtract floating-point reverse
fsubrp
FSUBRP
subtract floating-point reverse and pop
fxtract
FXTRACT
extract exponent and significand

Comparison Instructions (Floating-Point)

The floating-point comparison instructions operate on floating-point or integer operands.

Table 3-15 Comparison Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
fcom
FCOM
compare floating-point
fcomi
FCOMI
compare floating-point and set %eflags
fcomip
FCOMIP
compare floating-point, set %eflags, and pop
fcomp
FCOMP
compare floating-point and pop
fcompp
FCOMPP
compare floating-point and pop twice
ficom
FICOM
compare integer
ficomp
FICOMP
compare integer and pop
ftst
FTST
test floating-point (compare with 0.0)
fucom
FUCOM
unordered compare floating-point
fucomi
FUCOMI
unordered compare floating-point and set %eflags
fucomip
FUCOMIP
unordered compare floating-point, set %eflags, and pop
fucomp
FUCOMP
unordered compare floating-point and pop
fucompp
FUCOMPP
compare floating-point and pop twice
fxam
FXAM
examine floating-point

Transcendental Instructions (Floating-Point)

The transcendental instructions perform trigonometric and logarithmic operations on floating-point operands.

Table 3-16 Transcendental Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
f2xm1
F2XM1
computes 2x-1
fcos
FCOS
cosine
fpatan
FPATAN
partial arctangent
fptan
FPTAN
partial tangent
fsin
FSIN
sine
fsincos
FSINCOS
sine and cosine
fyl2x
FYL2X
computes y * log2x
fyl2xp1
FYL2XP1
computes y * log2(x+1)

Load Constants (Floating-Point) Instructions

The load constants instructions load common constants, such as π, into the floating-point registers.

Table 3-17 Load Constants Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
fld1
FLD1
load +1.0
fldl2e
FLDL2E
load log2e
fldl2t
FLDL2T
load log210
fldlg2
FLDLG2
load log102
fldln2
FLDLN2
load loge2
fldpi
FLDPI
load π
fldz
FLDZ
load +0.0

Control Instructions (Floating-Point)

The floating-point control instructions operate on the floating-point register stack and save and restore the floating-point state.

Table 3-18 Control Instructions (Floating-Point)

Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
fclex
FCLEX
clear floating-point exception flags after checking for error conditions
fdecstp
FDECSTP
decrement floating-point register stack pointer
ffree
FFREE
free floating-point register
fincstp
FINCSTP
increment floating-point register stack pointer
finit
FINIT
initialize floating-point unit after checking error conditions
fldcw
FLDCW
load floating-point unit control word
fldenv
FLDENV
load floating-point unit environment
fnclex
FNCLEX
clear floating-point exception flags without checking for error conditions
fninit
FNINIT
initialize floating-point unit without checking error conditions
fnop
FNOP
floating-point no operation
fnsave
FNSAVE
save floating-point unit state without checking error conditions
fnstcw
FNSTCW
store floating-point unit control word without checking error conditions
fnstenv
FNSTENV
store floating-point unit environment without checking error conditions
fnstsw
FNSTSW
store floating-point unit status word without checking error conditions
frstor
FRSTOR
restore floating-point unit state
fsave
FSAVE
save floating-point unit state after checking error conditions
fstcw
FSTCW
store floating-point unit control word after checking error conditions
fstenv
FSTENV
store floating-point unit environment after checking error conditions
fstsw
FSTSW
store floating-point unit status word after checking error conditions
fwait
FWAIT
wait for floating-point unit
wait
WAIT
wait for floating-point unit