Figure A.4 High-level/low-level view of conditional code with multiple alternate
execution paths.Logical Operators
High-level languages have special operators that allow the use of compound con-
ditionals in a single conditional statement. When specifying more than one con-
dition, the code must specify how the multiple conditions are to be combined.
The two most common operators for combining more than one logical state-
ments are AND and OR (not to be confused with the bitwise logic operators).
As the name implies, AND(denoted as &&in C and C++) denotes that two
statements must be satisfied for the condition to be considered true. Detecting
such code in assembly language is usually very easy, because you will see twoif (SomeVariable < 10)
SomeFunction();
else if (SomeVariable == 345)
SomeOtherFunction();
else if (SomeVariable == 346)
AnotherFunction();
else if (SomeVariable == 347)
YetAnotherFunction();cmp [Variable1], 10
jae AlternateBlock1
call SomeFunction
jmp AfterIfBlock
AlternateBlock1:
cmp [Variable1], 345
jne AlternateBlock2
call SomeOtherFunction
jmp AfterIfBlock
AlternateBlock2:
cmp [Variable1], 346
jne AlternateBlock3
call AnotherFunction
jmp AfterIfBlock
AlternateBlock3:
cmp [Variable1], 347
jne AfterIfBlock
call YetAnotherFunction
AfterIfBlock:
...Assembly Language Code High-Level CodeReversedReversedReversedReversed492 Appendix A21_574817 appa.qxd 3/16/05 8:52 PM Page 492