2015-03-23 24:56:53
VIA popsuła swoje API! :P

Taki szybki protip dla wszystkich, którzy chcą z tego skorzystać i utknęli - VIA Padlock SDK jest popsute. Konkretnie, to funkcja padlock_phe_partial_available() wewnętrznie wywołuje funkcję asm_is_nano(), która wygląda tak:

cglobal asm_is_nano
asm_is_nano:
    xor eax, eax                ;get vendor ID
    cpuid   
    ;cmp ebx, 0x746e6543        ;means "tneC"
    ;jne NO_VIA
    ;cmp edx, 0x48727561        ;means "Hrua"
    ;jne NO_VIA
    ;cmp ecx, 0x736c7561        ;means "slna"
    ;jne NO_VIA
    
    ;verdor ID cannot got now, since our board has errata.
    mov     eax,  0xC0000000
    cpuid
    cmp     eax, 0xC0000001
    jb      NO_VIA
    mov     eax,  0xC0000001;
    cpuid
    and     edx, 0x0C00;        PHE_MASK,CPUID EDX code for PHE
    cmp     edx, 0x0C00;        PHE_MASK,CPUID EDX code for PHE
    jne     NO_VIA
    
    mov eax, 1              ;get model
    cpuid
    or  eax, 0x000f
    cmp eax, 0x06ff         ;3rd bit is F, then nano.
    jne NO_VIA
    
    mov eax, 1              ;return 1
    ret
    
NO_VIA:
    xor eax,eax
    ret;

... No właśnie. Instrukcja CPUID zamazuje wartości rejestrów EAX, EBX, ECX i EDX, i nic nie przywraca ich wartości, wobec czego po wywołaniu padlock_phe_partial_available() program przestaje zachowywać się przewidywalnie. Rozwiązanie? Przepisać sobie ręcznie asm_is_nano(), dodając pushe i popy odpowiednich rejestrów w odpowiednich miejscach.

2015-02-20 00:40:22
Ograniczenie liczby MIBów w sub-agentach Net-SNMP

Szybki protip dla tych, którzy tworzą własne sub-agenty dla Net-SNMP, a dla których problemem może być duża liczba trzymanych w systemie MIBów i wynikające z tego zwiększone użycie pamięci przez sub-agentów.

2014-06-02 21:30:56
HrCrc32c

Kolejny wpis z serii "Jak dostałem Haswella". W poprzednim odcinku - Popcnt, więc tym razem pora na crc32c, czyli CRC32 z wielomianem 0x11EDC6F41. Do czego to można wykorzystać? Oczywiście do liczenia sumy kontrolnej, ale i do hashowania (np. w hashmapach).

2014-05-18 20:07:58
Czy dysk się kręci?

Zaskakujące jest, że mimo wszechobecności laptopów, tak mało aplikacji działa na nich poprawnie. Koronnym przykładem owej niepoprawności jest świadome ignorowanie stanu zasilania poszczególnych komponentów, co (czasami bardzo) negatywnie odbija się na czasie pracy laptopa na baterii, np. gdy jakaś aplikacja nagle uznaje, że akurat 5 sekund po zatrzymaniu (talerzowego) dysku bezwzględnie potrzebuje wysrać pół tony plików tymczasowych albo zrobić pusty autozapis (tj. zapisać plik auozapisu w sytuacji, gdy tak naprawdę od ostatniego zapisu nic się nie zmieniło). Windows 2000 i nowsze dają możliwość określenia w jakim stanie zasilania jest dane urządzenie, m. in. do określenia czy dysk się kręci, można użyć funkcji GetDevicePowerState, która wcale nie jest trywialna, jeśli chodzi o poprawne używanie.

2014-05-05 01:23:17
HrPopCnt, czyli dostałem Haswella

Dopiero teraz dociera do mnie, ile fajnych bajerów tkwi w moim lunchboxie, a jednym z nich jest instrukcja POPCNT obsługiwana przez Core i3-4130T. A co robi ta instrukcja? Zlicza ilość zapalonych bitów w danym argumencie.

2014-03-23 22:45:53
Fujitsu Esprimo Q520

Fujitsu Esprimo Q520 to niewielki (18,5cm x 18,8cm x 5,4cm), ale w pełni wyposażony komputer stacjonarny. Wynalazkiem zainteresowałem się po tym, jak w pracy znalazłem takowy na chodzie i dane mi było podłączyć go pod miernik prądu i pobawić się nim chwilę. Od razu zakochałem się i odliczałem dni do wypłaty tym bardziej, że od jakiegoś czasu i tak nosiłem się z zamiarem wymiany Atomicy na coś mocniejszego ;)

W zasadzie to dziwię się, że produkt jest tak mało popularny w naszym kraju. Rozumiem, że nie jest "mejd in czajna" i m. in. przez to swoje kosztuje, ale urządzenie jest naprawdę wysokiej jakości i warto chociaż przyjrzeć się jemu.

2013-09-22 00:25:39
XP i 100% użycia CPU przez svchost.exe

Od jakiegoś czasu zdarza się, że WinXP, nawet gołe po załadowaniu wszystkich trzech ServicePacków, mocno spowalnia krótko po uruchomieniu. Menedżer zadań pokazuje zaś, że proces "svchost.exe" wykorzystuje cały rdzeń procesora. Jeżeli nie jest to jakaś infekcja lub zła konfiguracja, to winnym może być Windows Update.

Update 11.11.2016: wersja dla Windows 7, 8 i 8.1 jest dostępna.

2011-10-17 11:27:40
zlibsuballoc - lepsze zarządzanie pamięcią dla biblioteki zlib

Drobnica przygotowana na potrzeby Hellcore Mailera i paru innych moich projektów.

Problem jest błahy - zlib, rozpoczynając (de)kompresję, alokuje pewną ilość pamięci i dealokuje ją, gdy skończy. Pomnożyć to razy kilka tysięcy i wydajnościowa katastrofa gotowa. zlibsuballoc ma za zadanie tej katastrofie jeśli nie zapobiec, to przynajmniej zredukować ją do akceptowalnego poziomu, bez wpływania na cały program.

2011-09-26 13:26:08
Schowek - ej, oni go w Viście naprawili!

I ja to mówię poważnie. Nie mówi się o tym głośno, ba, nawet na oficjalnej liście nowości w Win32 API dla Visty nie ma o tym napisane, więc nie wszyscy o tym wiedzą. A chodzi oczywiście o zakleszczanie się jednego lub więcej programów w sytuacji, gdy jeden z programów monitorujących schowek (np. fikuśny edytor tekstowy) najzwyczajniej zawiesi się. Plaga a'la czasy Win98, gdy jeden program mógł wyłożyć cały system do góry nogami, ma się całkiem nieźle nawet pod Windows 7, ale od Visty w górę wreszcie zdecydowali się coś z tym zrobić. Tylko dlaczego ludzie dowiadują się o tym przypadkiem - zakładając że w ogóle?

2010-10-02 21:32:25
JPEGFast - szybkie wczytywanie JPEGów w Delphi

This article is also available in English language

Jak pisałem apropos moich "badań", dostępna jest biblioteka szybko dekompresująca JPEGi (w oparciu o instrukcje SSE/SSE2). Ponieważ dopiero od Delphi 7 wbudowany asembler zna instrukcje SSE/SSE2, opakowałem pierwotny kod w bibliotekę DLL i upubliczniłem dwie funkcje, dzięki czemu skorzystać można nie tylko mając Delphi 7 lub nowsze. I w zasadzie nie tylko Delphi, bo różne VC++ i inne cuda też mogą z biblioteki skorzystać.

Na marginesie, to na Branchware pojawiły się zaktualizowane wersje komponentu TSysIcon i klasy TPixelTransformer.

« Późniejsze wpisy | Wcześniejsze wpisy »

Powered by:
Hellcore Mailer - polski program pocztowyOpera Web BrowserFreeBSD - The Power to Serve!Slackware
RSSy:
Sidekick:
Projekty:
O autorze:
Zobacz:
Kategorie:
Archiwum:
Szukaj: