
LeCroy Corporation
Sierra Trainer Generation Language
406
Sierra M6
‐
2 SAS/SATA Protocol Analyzer User Manual
Preprocessor Integer Arithmetic
You can declare DWORD variables, make arithmetic operations, and use them in field and
parameters assignments.
Note:
Arithmetic expressions are allowed only in numeric variable assignments.
Examples:
Legal Operations
x = 2
y = ( z = 12 ) + ( SOME_DE 36 ) / 8
z = 0x1 << 5
s = "Some Hex Data" # constant may be used in operations
x++
y--
z += ( x + y )
x = ( ( y & 0xFF ) >> 5 ) / 12
SOF ( Repeat = x, Idle = y )
X
{
Field16 = 0xEEEE # Example of the data payload assignment which uses
both
integer
variables,
constants,
hex
literals
and
data
patterns
Data = { y y y y 7a7a7a7a "Some Hex Data" "Some Hex Data" 8b8b8b8b
z z z z [PATTERN_3] }
}
( Repeat = 10, Idle = y ) # uses integer variable for parameter/
setting.
Illegal operations
x = y + 2
SOF ( Repeat = (x+y)*7 )
# - illegal, use z = (x+y)*7 SOF ( Repeat = z ) instead
Loops
Loops can be used in two modes:
1. Using an integer number, loop a specified number of loops. This number has to be
smaller than 64,000.
2. Using the word “infinite”, loops for ever.
Loops ( loop_count/Infinite )
{
send instructions
assignments
change values
send instructions
}