BMI1
BMI1 e n'estenziona x86 p'a manipolazziona d'e bit a livello scalare, cumpreso 'o caccia 'e bit, ll'isulamento d'e bit e 'o cunto d'e zero a fine d'o nummero. Fatica ngopp'a reggistre nteri pe fatiche generale cchiu tosto ca ngopp'a corsie vetturiali.
Chello ca t'hê 'a sapé
BMI1 e n'estenziona x86 p'a manipolazziona d'e bit a livello scalare, cumpreso 'o caccia 'e bit, ll'isulamento d'e bit e 'o cunto d'e zero a fine d'o nummero. Fatica ngopp'a reggistre nteri pe fatiche generale cchiu tosto ca ngopp'a corsie vetturiali.
Comme fonsiona
L'estenziona tene ANDN, BEXTR, BLSI, BLSMSK, BLSR e TZCNT. 'Ste strazzione metteno 'nzieme passagge 'e mascheramento, scèveta o cunto ca si no cercassero sequenze cchiu longhe. Ll'effiette d'e flag pe ogne strazziona e 'e cundizziune limite fannu parte d'o patto, specialmente quanno l'input e zero.
Addò serve
N'iteratore 'e bitset po scancella 'o bit cchiu vascio mpustato cu BLSR, mentre nu decodificatore po caccià nu campo cu BEXTR. Si chesto po giova dependera d'e dipendenze e d'a cumminazziona d'o bersaglio. BEXTR nun e nu gather arbitrario 'e bit ca nun stanno vicino.
Comme se cuntrolla 'o supporto e ll'abbilitazzione
Cuntrolla 'o bit 3 'e CPUID.07H.00H:EBX pe BMI1. Usa 'o dispatching d'e funziune cchiu tosto ca pruva si TZCNT pare ca fatica. 'O risultato cu ll'input a zero e 'o cumpurtamento d'e flag hann'a cumbacià cu chille pruviste p'a strazziona.
Cuntrolla 'a struzzione esatta e 'a forma 'e ll'operando mméce 'e supponere 'o supporto da n'estenzione vicina. 'E funzionalita scalari intere 'e soleto ausano riggistre p'uso generale; na codifeche assuciata ch' 'e vetturi nun vo dicere pe fforza ca serve 'o stato vetturiale.
Chello ca 'a funzionalita nun stabbilisce
BMI1 nun vo dicere BMI2, POPCNT, LZCNT o supporto d'o SO p'o stato AVX. TZCNT sparte na rilazziona 'e codifica cu na strazziona cchiu antica, accussi n'esecuzziona nun suppurtata po da 'nterpretazziune diverse 'nvece 'e falli pulito.
Cumpatibbilita e prestazziune dint' 'a prateca
'A currettezza dipènne d' 'e casi limite e pure d' 'a velocita. Input a zero, overflow, flag 'e carry, larghizza 'e ll'operando, allineamento e urdenamento d' 'a memoria ponno cagnà 'a semanteca. È meglio ausà 'e 'nterfacce d' 'o compilatore o d' 'e libbrerie ca documentano sti dettaglie e furnesceno n'alternativa supportata.
Na lista 'e verifeca prateca
- Riggistra 'o mudello esatto d' 'o prucessore o d' 'a piattaforma e 'e vversione 'e ll'applicazzione, d' 'o sistema operativo e d' 'o runtime cumbulute. Mantien' 'e pparole esatte 'e ll'errore o d' 'o requisito overo.
- Cuntrolla 'o riferimento d' 'o costruttore pe chillu mudello esatto, po verifeca 'a capacita effettiva e 'o stato abbilitato dint'a ll'ambiente addò gira 'o prugramma.
- Cunfrunta ogne requisito d' 'o binario o backend sciveto. Na funzionalita cu nu nomme sumigliante, n'alias o n'etichetta tecnologgeca generale nun abbasta.
- Cunferma ca ll'applicazzione ha sciveto ll'implementazzione vuluta. Ausa 'a diagnosteca documentata soja e n'alternativa supportata quanno 'e requisite nun songo rispettate.
- Fa nu sulo cagnamento supportato a ll'avota e ripete 'o stesso carico 'e fatica. Mantien' 'a cunfigurazzione origginale e 'a via 'e recuppero a portata 'e mana.
Si 'a funzionalita sta scritta ma 'o software nun 'a po ausà
Pparti d' 'o cumponente esatto ca falla. Nu database hardware descrive 'a capacita riggistrata; 'o sistema operativo o ll'hypervisor po mustrà n'ambiente effettivo diverzo. N'errore 'e struzzione illegale addimanna pure 'e verificà 'a struzzione ca sgarra overamente e 'a build d' 'o binario, pecché na corruzzione o n'ata struzzione nun supportata po dà nu sintomo simile.
Stalla 'a vversione 'e ll'applicazzione, d' 'o driver o d' 'o runtime supportata p' 'a piattaforma esatta, e ausa 'a baseline documentata d' 'o costruttore o na build 'e fallback si serve. N'aggiurnamento software nun po crià na struzzione ca 'o prucessore nun tene. 'E cagnamiente a 'o firmware e 'e puliteche 'e sicurezza hann' 'a siguità 'a prucedura d' 'o costruttore d' 'o sistema e nu pピアノ 'e recuppero mméce 'e na ricetta generale 'e uttimizzazzione.
Funte e ambito 'e sta spiegazzione
Intel 64 and IA-32 Architectures Software Developer's Manual · x86-64 psABI: levielle d'architettura e microarchitettura d'o prucessore
Sti riferimente stabbilisceno 'o cumpurtamento 'e ll'architettura e 'e requisite d' 'o software. Nun verificano 'e manera 'ndipennente ogne valore 'e funzionalita ngopp'a na paggena 'e nu mudello hardware culegato. P' 'o supporto d' 'o mudello, ausa ll'evidenze d' 'o costruttore 'e chella paggena e verifeca 'a cunfigurazzione effettiva d' 'o sistema. St'articulo nun furnesce benchmark, certificazzione o data 'e revisone 'ndipennente.
Funte e verìfeca
Prupietà editoriale: Feex. Nisciuna data 'e revisizzione 'ndipennente è riggistrata. Comme facimmo 'e recerche.
- Intel 64 and IA-32 Architectures Software Developer's Manual · 'E Vulume 1 e 2 descrivono 'e ffamiglie 'e struzzione cu nomme e 'o CPUID; 'o Vulume 3 descrive 'o stato, 'a pagginazzione, VMX e 'e cuntrolle 'e prutezzione. 'A documentazzione 'e ll'architettura nun stabbilisce 'o supporto pe nu mudello particulare.
- x86-64 psABI: levielle d'architettura e microarchitettura d'o prucessore · Machine Interface, Processor Architecture: tabbella d'e cundizzione 'e base e cumulative v2/v3/v4, cuntrolle d'o stato d'o SO e cunsiglie p'o sveluppo.
È servuto chist'articulo?
Basta nu sì o nu no. Si vuó, sciglie na mutivazzione o miett' na nota corta.
Grazie. Chisto nce dà 'na mano a fa mèglio 'sta paggena.