Login

Subversion Repositories NedoOS

Rev

Rev 659 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

FUNC UINT findlabel(PBYTE labeltext)
{
//VAR PBYTE _labelN; //єърчрЄхы№ эр Єхъє∙є■ ЄрсышЎє ьхЄюъ
VAR PBYTE plabel; //ьхЄър т ЄрсышЎх чрърэўштрхЄё  эєы╕ь
//VAR PBYTE pstr; //ьхЄър т ёЄЁюъх чрърэўштрхЄё  TOK_ENDTEXT
//VAR BYTE cstr; //ёшьтюы шч ёЄЁюъш
//VAR BYTE clabel; //ёшьтюы шч ЄрсышЎ√ ьхЄюъ
//VAR UINT pnext_index; //рфЁхё ёыхфє■∙хщ ьхЄъш т ЄрсышЎх
//VAR UINT plabelqueuestart_index; //т (_labelN+plabelqueuestart_index) їЁрэшЄё  рфЁхё эрўрыр Ўхяюўъш фы  ьхЄъш
  _hash = hash(labeltext)&0x3ff;

  _labelN = _labels0; //_labelpage[(UINT)(_hashhigh&_LABELPAGEMASK)]; //set page (todo ъръ юяЁхфхышЄ№? ёшёЄхьэ√щ ьръЁюё?)
  //plabelqueuestart_index = ((UINT)(_hash))<<1; //todo Ёрчэр  ЁрчЁ фэюёЄ№ UINT
  _plabel_index = _labelshift[_hash];
  //todo ъръ ёфхырЄ№ эрсюЁ ьрёёштют т Ёрчэ√ї ёЄЁрэшўърї? ёфтшу шэфхъёр т юфэюь ьрёёштх тэшчє?
  //_labelflag = 0x00; //"label not found"
  WHILE (_plabel_index != _LABELPAGEEOF) { //яюър Ўхяюўър ьхЄюъ эх чръюэўшырё№
    plabel = &_labelN[_plabel_index]; //(PBYTE)((POINTER)_labelN + (POINTER)_plabel_index);
    _plabel_index = *(PUINT)(plabel);
    plabel = &plabel[+sizeof(UINT)]; //(PBYTE)((POINTER)plabel + (POINTER)2);
    IF (strcp((PCHAR)labeltext, (PCHAR)plabel)) { //ьхЄър эрщфхэр
      //plabel = (PBYTE)((POINTER)plabel + (POINTER)_labellen); //тъы■ўр  0
        //errstr("found label "); errstr(labeltext); enderr();
      _plabel_index = (UINT)(plabel - _labelN) + _labellen; //тъы■ўр  0 //єърчрЄхы№ эр эрўрыю фрээ√ї ёючфртрхьющ ьхЄъш (эрфю юс чрЄхы№эю чряюьэшЄ№!)
      //_labelflag = *(PBYTE)(plabel);
      //_labelvalue = *(PLONG)((POINTER)plabel + (POINTER)1);
      BREAK; //яюьэшЄ _plabel_index эрўрыр фрээ√ї эрщфхээющ ьхЄъш
    };
    //_plabel_index = pnext_index;
  }; //хёыш эх эрщфхэю, Єю _plabel_index==_LABELPAGEEOF
RETURN _plabel_index;
}