[[FrontPage]]

----

매뉴얼의 의사코드에서 쓰이는 가상의 함수. 뜻은 간단하다. 명령어의 상태 요구 비트(31~27비트)가 현재 시스템의 상태에 맞는가.

처음엔 멍청하게도 이 4비트가 CPSR의 최상위 4비트와 일대일 대응이 되는줄 알았는데.. 그건 아니고 이런 의미들이 있다.

(p.111 A3.2 The condition field 참고)

참고로 CPSR의 상위 4비트는 N,Z,C,V 순(Z,C,N,V순서가 아니다)

 * 0000 EQ: Equal, Z비트가 1 (x1xx)
 * 0001 NE: Not equal, Z비트가 0 (0xxx)
 * 0010 CS/HS: Carry set/unsigned higher or same, C비트가 1 (xx1x)
 * 0011 CC/LO: Carry clear/unsigned lower, C비트가 0 (xx0x)
 * 0100 MI: Minus/negative, N비트가 1 (1xxx)
 * 0101 PL: Plus/positive or zero, N비트가 0 (0xxx)
 * 0110 VS: Overflow, V비트가 1 (xxx1)
 * 0111 VC: No overflow, V비트가 0 (xxx0)
 * 1000 HI: Unsigned higher, C=1이고 Z=0 (x01x)
 * 1001 LS: Unsigned lower or same, C=0이거나 Z=1 (xx0x or x1xx)
 * 1010 GE: Signed greater than or equal, N=1이고 V=1, 또는 N=0이고 V=0, 즉 N == V (1xx1 or 0xx0)
 * 1011 LT: Signed less than, N=1이고 V=0, 또는 N=0이고 V=1, 즉 N != V (1xx0 or 0xx1)
 * 1100 GT: Signed greater than, Z==0이고 N==V (10x1 or 00x0)
 * 1101 LE: Signed less than or equal, Z==1이거나 N != V (...좀 많다)
 * 1110 AL: Always, 항상 (명령어의 이진 코드가 16진수 E로 시작하면 ALways다. 가장 많다)
 * 1111 이름없음: 아래 참고

여기서 '~비트가' 이란 것은 해당 비트만 1이고 나머지는 0... 이런 뜻이 아니라, 다른 비트야 어찌됐든 해당 비트만 그 값이면 된다는 뜻이다. 예를 들어, cond bit가 0000(eq)일 때, CPSR의 상위 4비트가 0100이든 1100이든 1111이든 상관없다. x0xx만 아니면 된다.

== Condition code 0b1111 ==

작성중

