Reversing : The Hacker's Guide to Reverse Engineering

(ff) #1
Table 12.1 (continued)
INSTRUCTION NAME DESCRIPTION
br– Unconditional branch Unconditionally branch into the specified
instruction. This instruction uses the short
format br.s, where the jump offset is 1 byte
long. Otherwise, the jump offset is 4 bytes
long.
box—Convert value type to These two instructions convert a value type
object reference to an object reference that contains type
unbox—Convert boxed value identification information. Essentially box
type to its raw form constructs an object of the specified type
that contains a copy of the value type that
was passed through the evaluation stack.
unboxdestroys the object and copies its
contents back to a value type.
add—Add numeric values Basic arithmetic instructions for adding,
sub—Subtract numeric values subtracting, multiplying, and dividing
mul—Multiply values numbers. These instructions use the first two
div—Divide values values in the evaluation stack as operands
and can transparently deal with any
supported numeric type, integer or floating
point. All of these instructions pop their
arguments from the stack and then push the
result in.
beq—Branch on equal Conditional branch instructions. Unlike IA-32
bne—Branch on not equal instructions, which require one instruction
bge—Branch on greater/equal for the comparison and another for the
bgt—Branch on greater conditional branch, these instructions
ble—Branch on less/equal perform the comparison operation on the
blt—Branch on less than two top items on the stack and branch
based on the result of the comparison and
the specific conditional code specified.
switch—Table switch on value Table switch instruction. Takes an int32
describing how many case blocks are
present, followed by a list of relative
addresses pointing to the various case
blocks. The first address points to case 0, the
second to case 1, etc. The value that the case
block values are compared against is popped
from the top of the stack.

432 Chapter 12

Free download pdf