예제 #1
0
파일: check_str.c 프로젝트: kayahr/kaytils
END_TEST

START_TEST(test_strCountChar)
{
    fail_unless(strCountChar("foobarfoo", 'f') == 2, NULL);
    fail_unless(strCountChar("foobarfoo", 'b') == 1, NULL);
    fail_unless(strCountChar("ff", 'f') == 2, NULL);
    fail_unless(strCountChar("f", 'f') == 1, NULL);
    fail_unless(strCountChar("f", 'b') == 0, NULL);
}
예제 #2
0
int AsmCodeSize(AsmCode *code) {                    // 計算指令的大小     
  Array *tokens = code->tokens;
  char  *arg0 = AsmCodeArg(code, 0);
  switch (code->opCode) {                           // 根據運算碼 op
    case OP_RESW :                                  //  如果是RESW       
      return 4 * atoi(arg0);                  //   大小為 4*保留量  
    case OP_RESB :                                  // 如果是RESB        
      return atoi(arg0);                      //   大小為 1*保留量  
    case OP_WORD :                                  // 如果是WORD        
      return 4 * (strCountChar(arg0, ",")+1); //   大小為 4*參數個數
    case OP_BYTE : {                                 // 如果是BYTE        
      int i, si, size=0;
      for (i=code->argStart; i<tokens->count; i++) {
        char *item = tokens->item[i];
        if (item[0] == '"')
          for (si=1; item[si] != '"'; si++)
              size += 1;
        else
          size += 1;
      }
      return size;
    }
    case OP_NULL :                                  // 如果只是標記                      
      return 0;                                     //   大小為 0        
    default :                                       // 其他情形 (指令)   
      return 4;                                     //   大小為 4
  }                                                   
}