2014-07-20 1 views
0

단계 목록에 압축을 풀고 싶은 비트 목록이 있습니다. 1 단계는 구조체 A에 압축을 풀고 A.next에서받는 값에 따라 다릅니다. 필드에서 B, C 또는 D가 될 수있는 다른 "REST"를 풀고 싶습니다.단계별 목록 압축 해제 방법 (specman)

내 문제는 다음 압축 풀기 시작 위치를 알려주는 방법입니다. 코드 : 일반적으로

unpack(packing.low, l, A); 
if (A.next==B) {unpack(packing.low, l, B, LAST_UNPACK_SIZE)}; 
if (A.next==C) {unpack(packing.low, l, C, LAST_UNPACK_SIZE)}; 
if (A.next==D) {unpack(packing.low, l, D, LAST_UNPACK_SIZE)}; 

답변

1

, 풀기 정의의 목적은, 구조체의 방법 do_unpack()를 확장하는 제안입니다. 바깥 쪽에서는 패킹이 간단하고 내부는 로직을 캡슐화 할 수 있습니다. 변수에서 B, C, D 변수에 액세스 할 수 없으므로 흐름과 일치하는지 확신 할 수 없습니다.

unpack(packing.low, l, A, buffer); 
case A.next { 
    B: { unpack(packing.low, buffer, B) }; 
    C: { unpack(packing.low, buffer, C) }; 
    D: { unpack(packing.low, buffer, D) }; 
    default: { error(...) }; 
}; 
이 특정한 경우에 대한

, 당신은 버퍼에서 나머지를 풀고 그 첫 번째 단계로 비트의 버퍼 목록을 전달과 같은 몇 가지 트릭을 시도 할 수 있습니다