签到天数: 1717 天 [LV.Master]伴坛终老
|
发表于 2014-1-24 16:59:47
|
显示全部楼层
回3楼:其他条件断点% f# b, D) d, F/ t; V
Conditional Breakpoints
' o, ?- _3 t/ y# e8 d
: O# q7 e- ~% O$ Q" @! y+ ~Breakpoints may also have a conditional statement that causes them to execute only if that statement evaluates to true. The conditional breakpoint grammar has this form: l$ B) z, y$ [6 R8 E+ X# z
9 o9 q% r/ p' e4 U q" G2 [
Connect -> Compare { ('||' | '&&') Compare }
9 ]8 L" y1 d6 q! d! \4 \; R' rCompare -> Sum { ('==' | '!=' | '<=' | '>=' | '<' | '>') Sum }
9 H9 o" ] y: w7 |Sum -> Product { ('+' | '-') Product } , p% \$ M# r% `" y6 Q# X: `- W$ A
Product -> Primitive { ('*' | '/') Primitive } * n1 z- @+ f" z- U4 R& S) U
Primitive -> Number | Address | Register | Flag | PC Bank | Data Bank | '(' Connect ')' - g5 s! e4 z) G6 {1 Q/ L
Number -> '#' [0123456789ABCDEF]*
, G) K% f& S* U; ^0 m: [. n1 ZAddress -> '$' [0123456789ABCDEF]* | '$' '[' Connect ']' . {0 N( Y* B/ v# P
Register -> 'A' | 'X' | 'Y' | 'P' $ G# n+ t( }% U8 v2 j9 D
Flag -> 'N' | 'C' | 'Z' | 'I' | 'B' | 'V' X# ]+ D3 s- z
PC Bank -> 'K'
6 D( W6 g( t; O# X$ @) h8 wData Bank -> 'T' - N q1 m; r* i8 t- a R
% m- Y9 U; D. Z: U5 a2 e+ C9 X" q
The parser is very strict. All numbers are hexadecimal. Always prefix a number with # for an immediate value, or $ for a memory address. If a memory address needs to be calculated use $[] with the calculation inside the brackets.: q: x8 D9 b/ L0 u$ t
1 [# |. k% F5 C; l" M
Registers A/X/Y are 8-bit unsigned values. Register P is the 16-bit program counter.: f& A7 D. q/ [( \
; T4 l' b! G6 d7 S* P' }Flags evaluate to 1 if set, 0 if clear.
; ]. W# [% Y6 R4 x! z% {0 ^! u
& D9 \ P5 a5 A! O/ w" D: ^/ KConnecting operators || or && combine boolean terms. Parentheses dictate order of operations.
. I L+ r% ^- |. f; S" K
; I% m; l: M$ r8 LExample conditions:
0 Z/ O$ |+ @+ t/ {/ ?4 U4 g8 C. Q' [9 J: `# r0 i
Break only if register A is less than value at memory address $0005:. X0 Y, V( c# M$ U' }9 V' o7 O
! Y4 u; [/ W/ t
A < $0005
, d8 K5 D5 G* Y5 z; s* b3 o, R
$ S |6 X) B. ~Break only if the value at the indirect address is not equal to FF:$ `' Z# D9 f" P; b! H1 [5 Y
) m n9 }( ^! F#FF != $[$10+($11*#100)]
5 c4 l/ A$ m2 g$ w5 U5 m4 J' ~' s8 c: q& E1 b2 d3 R, Y1 y7 A$ }
Break only if flag N is clear or A is not equal to 00:+ H7 W! |( F! V, q8 V4 E$ q0 g
) d$ K1 v8 B$ f6 I) X; m(N==#0 || A!=#0)6 x# F( C6 y" Z f2 r, X' p) g
( x, M8 r, \- u$ k; }$ jBreak only when accessing a data from bank 2 (the condiition is relevant when using with Read/Write-type breakpoints):/ `7 v0 [! {8 i/ d, H; e1 O
5 o# i. U$ L1 @. E' @5 p% K
T==#2
% ~ ?( l+ @- @1 ^9 @9 w9 n
" F1 M# b' c) J以上内容来自fceux自带的帮助文档说明 |
|