CoolFace
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes838downloads
KHashA.txt267 linesDownload Raw Back to Kernel
1 2asm {3//************************************4SYS_HASH_STR::5// IN:  RSI=Addr of string6// OUT: RAX7        XOR     RAX,RAX8        TEST    RSI,RSI9        JZ      @@1510 11        PUSH    RSI12        PUSH    RBX13        XOR     RBX,RBX14        JMP     @@1015 16@@05:   SHL1    RBX17        ADC     RBX,RAX18@@10:   LODSB19        TEST    AL,AL20        JNZ     @@0521 22        MOV     RAX,RBX23        SHR     RBX,1624        ADC     RAX,RBX25        POP     RBX26        POP     RSI27 28@@15:   RET29//************************************30SYS_HASH_SINGLE_TABLE_FIND1::31// IN:  RAX=HASHED STRING VAL32//      RSI=STR33//      RBX=TYPE MASK34//      RDI=TABLE35//      RCX=INSTANCE, NOT ZERO36// OUT: RAX=ENTRY OR ZERO NOT FOUND37//      RDX=POINTER TO POINTER TO ENTRY38//      RCX IF NOT FOUND ENOUGH, DECREMENTED BY NUM MATCHES39//      ZERO FLAG SET NOT FOUND40        MOV     RCX,141SYS_HASH_SINGLE_TABLE_FIND::42        TEST    RCX,RCX43        JNZ     @@0544        XOR     RAX,RAX45        RET46@@05:   AND     RAX,U64 CHashTable.mask[RDI]47        MOV     RDX,U64 CHashTable.body[RDI]48        LEA     RDX,U64 [RDX+RAX*8]49@@10:   MOV     RAX,U64 [RDX]50        TEST    RAX,RAX51        JNZ     @@1552        RET53 54@@15:   TEST    U32 CHash.type[RAX],EBX55        JZ      @@3056        PUSH    RAX57        PUSH    RDI58        PUSH    RSI59        MOV     RDI,U64 CHash.str[RAX]60@@20:   LODSB61        CMP     U8 [RDI],AL62        JNE     @@2563        INC     RDI64        TEST    AL,AL65        JNZ     @@2066        POP     RSI67        POP     RDI68        POP     RAX69        LOOP    @@3070        INC     U32 CHash.use_cnt[RAX]71        TEST    RAX,RAX72        RET73 74@@25:   POP     RSI75        POP     RDI76        POP     RAX77 78@@30:   LEA     RDX,U64 CHash.next[RAX]79        JMP     @@1080//************************************81SYS_HASH_FIND1::82// IN:  RSI=STR83//      RBX=TYPE MASK84//      RDI=TABLE85//      RCX=INSTANCE NUM86// OUT: RAX=ENTRY OR ZERO NOT FOUND87//      ZERO FLAG SET NOT FOUND88        MOV     RCX,189SYS_HASH_FIND::90        PUSH    RDI91        CALL    SYS_HASH_STR92 93@@05:   PUSH    RAX94        CALL    SYS_HASH_SINGLE_TABLE_FIND95        JNZ     @@1596        POP     RAX97@@10:   MOV     RDI,U64 CHashTable.next[RDI]98        TEST    RDI,RDI99        JNZ     @@05100        POP     RDI101        XOR     RAX,RAX102        RET103 104@@15:   ADD     RSP,8105        POP     RDI106        TEST    RAX,RAX107        RET108//************************************109SYS_HASH_BUCKET_FIND::110// IN:  RSI=STR111//      RDI=TABLE112// OUT: RAX=BUCKET113        PUSH    RDX114        CALL    SYS_HASH_STR115        AND     RAX,U64 CHashTable.mask[RDI]116        MOV     RDX,U64 CHashTable.body[RDI]117        LEA     RAX,U64 [RDX+RAX*8]118        POP     RDX119        RET120_HASH_STR::121        PUSH    RBP122        MOV     RBP,RSP123        PUSH    RSI124        MOV     RSI,U64 SF_ARG1[RBP]125        CALL    SYS_HASH_STR126        POP     RSI127        POP     RBP128        RET1    8129_HASH_FIND::130        PUSH    RBP131        MOV     RBP,RSP132        PUSH    RSI133        PUSH    RDI134        MOV     RSI,U64 SF_ARG1[RBP]135        MOV     RDI,U64 SF_ARG2[RBP]136        MOV     RBX,U64 SF_ARG3[RBP]137        MOV     RCX,U64 SF_ARG4[RBP]138        CALL    SYS_HASH_FIND139        POP     RDI140        POP     RSI141        POP     RBP142        RET1    32143_HASH_SINGLE_TABLE_FIND::144        PUSH    RBP145        MOV     RBP,RSP146        PUSH    RSI147        PUSH    RDI148        MOV     RSI,U64 SF_ARG1[RBP]149        MOV     RDI,U64 SF_ARG2[RBP]150        MOV     RBX,U64 SF_ARG3[RBP]151        MOV     RCX,U64 SF_ARG4[RBP]152        CALL    SYS_HASH_STR153        CALL    SYS_HASH_SINGLE_TABLE_FIND154        POP     RDI155        POP     RSI156        POP     RBP157        RET1    32158_HASH_BUCKET_FIND::159        PUSH    RBP160        MOV     RBP,RSP161        PUSH    RSI162        PUSH    RDI163        MOV     RSI,U64 SF_ARG1[RBP]164        MOV     RDI,U64 SF_ARG2[RBP]165        CALL    SYS_HASH_BUCKET_FIND166        POP     RDI167        POP     RSI168        POP     RBP169        RET1    16170_HASH_ADD::171        PUSH    RBP172        MOV     RBP,RSP173        PUSH    RSI174        PUSH    RDI175        MOV     RCX,U64 SF_ARG1[RBP]176        MOV     RSI,U64 CHash.str[RCX]177        MOV     RDI,U64 SF_ARG2[RBP]178        CALL    SYS_HASH_BUCKET_FIND179        MOV     RCX,U64 SF_ARG1[RBP]180        PUSHFD181        CLI182        MOV     RBX,U64 [RAX]183        MOV     U64 CHash.next[RCX],RBX184        MOV     U64 [RAX],RCX185 186        POPFD187        POP     RDI188        POP     RSI189        POP     RBP190        RET1    16191_HASH_ADD_AFTER::192        PUSH    RBP193        MOV     RBP,RSP194        PUSH    RDI195        MOV     RCX,U64 SF_ARG1[RBP]196        MOV     RDI,U64 SF_ARG3[RBP]197        PUSHFD198        CLI199        MOV     RAX,SF_ARG2[RBP]200        MOV     RBX,U64 [RAX]201        MOV     U64 CHash.next[RCX],RBX202        MOV     U64 [RAX],RCX203 204        POPFD205        POP     RDI206        POP     RBP207        RET1    24208_HASH_REM_DEL::209        PUSH    RBP210        MOV     RBP,RSP211        PUSH    RSI212        PUSH    RDI213        MOV     RCX,U64 SF_ARG1[RBP]214        TEST    RCX,RCX215        JZ      @@10216        MOV     RSI,U64 CHash.str[RCX]217        XOR     RBX,RBX218        MOV     EBX,U32 CHash.type[RCX]219        AND     EBX,~HTG_FLAGS_MASK&0xFFFFFFFF220        MOV     RDI,U64 SF_ARG2[RBP]221        MOV     RCX,U64 SF_ARG3[RBP]222        CALL    SYS_HASH_STR223 224        PUSHFD225        CLI226        CALL    SYS_HASH_SINGLE_TABLE_FIND227        JZ      @@05228        CMP     RAX,U64 SF_ARG1[RBP]229        JNE     @@05230 231        MOV     RBX,U64 CHash.next[RAX]232        MOV     U64 [RDX],RBX233 234        POPFD235 236        PUSH_C_REGS237        PUSH    RAX238        CALL    &HashDel239        POP_C_REGS240 241        POP     RDI242        POP     RSI243        MOV     RAX,1244        POP     RBP245        RET1    24246 247@@05:   POPFD248@@10:   POP     RDI249        POP     RSI250        XOR     RAX,RAX251        POP     RBP252        RET1    24253}254 255_extern _HASH_STR I64 HashStr(U8 *st); //Hash a string.256_extern _HASH_FIND CHash *HashFind(U8 *needle_str,CHashTable *haystack_table,257        I64 mask,I64 instance=1);//Find string in hash table.258_extern _HASH_SINGLE_TABLE_FIND CHash *HashSingleTableFind(U8 *needle_str,259        CHashTable *haystack_table,260        I64 mask,I64 instance=1);//Find string in single hash table.261_extern _HASH_BUCKET_FIND CHash **HashBucketFind(U8 *needle_str,262        CHashTable *haystack_table); //Find hash bucket.263_extern _HASH_ADD U0 HashAdd(CHash *tmph,264        CHashTable *table); //Add entry to hash table.265_extern _HASH_REM_DEL Bool HashRemDel(CHash *tmph,CHashTable *table,266        I64 instance=1);//Remove hash entry and del. Instance must match.267