Konwersja liczb binarnych do kodu BCD (AVR)

Na forum elektrody natrafiłem na temat związany z operowaniem na dużych liczbach na małych mikrokontrolerach AVR. W istocie temat dotyczył algorytmu szybkiej konwersji dużych liczb zapisanych w naturalnym systemie dwójkowym na ich reprezentację w kodzie BCD. Zagadnienie to wydało mi się na tyle ciekawe i praktyczne (w kilku projektach będę przechodził podobny problem), związane też … Czytaj dalej Konwersja liczb binarnych do kodu BCD (AVR)

Opublikowano Kategorie /dev/null

Shellcode: moje eksperymenty

Nigdy nie zajmowałem się szczególnie tematyką security, nie interesowało mnie pisanie czy zabawa z shellcode-ami czy exploit-ami. Za to często zdarzają mi się różne eksperymenty, które w wielu przypadkach są dobrym sposobem na poznanie nowych rzeczy. A także pomagają ugruntować swoją wiedzę i przekonania. Bo pomimo, że wiem co i jak w teorii oraz praktyce, … Czytaj dalej Shellcode: moje eksperymenty

Opublikowano Kategorie /dev/null

Monitorowanie OPS

W poprzedniej notce, namawiałem do eksperymentów, które mogłyby uprościć proces i implementację przedstawionego tam sposobu limitowania operacji. Wspomniałem o możliwości dodania adekwatnego mechanizmu, który byłby w stanie monitorować dane operacje i wyznaczać wartość określającą ilość wykonywanych operacji (np. na sekundę), czyli mierzenie przepustowości. Obecnie nie planuję implementacji takiego mechanizmu monitorowania, ale temat wydaje się ciekawy, … Czytaj dalej Monitorowanie OPS

Limitowanie OPS

Spędziłem ostatnio trochę czasu nad tematem limitowania operacji wykonywanych w określonym przedziale czasu. Sama idea zapoczątkowana została potrzebą szybkiej implementacji ograniczenia szybkości łącza, czyli typowe limitowanie transferu na potrzeby aplikacji, aby jeden program nie zajmował wszystkich dostępnych zasobów sieciowych. Nie będzie to typowe zagadnienie klasyfikowania, kolejkowania operacji lub kształtowania ruchu. Będzie to przedstawienie bardzo prostej … Czytaj dalej Limitowanie OPS

Odwracanie kolejności w SSE/AVX

W ostatniej notce, o możliwościach zmiany kolejności uporządkowania bajtów i bibliotece ByteOrder, wspomniałem, że w wolnej chwili postaram pobawić się SSE i spróbować, w prosty i w miarę wydajny sposób, zaimplementować operację bswap znaną z 32/64-bitowych rejestrów na rejestrach 128-bitowych, a nawet 256-bitowych. Poniekąd udało mi się to zrobić ;) SSE2 Druga wersja strumieniowych rozszerzeń … Czytaj dalej Odwracanie kolejności w SSE/AVX

Bezpieczne iteratory

Od wersji 2005 Visual C++ posiada opcje sprawdzania ważności iteratorów. Nie będę tu produkował tekstu opisującego jak to dokładnie działa, na stronach MSDN można znaleźć kilka artykułów na ten temat: Checked Iterators, Debug Iterator Support. W wersji debug aplikacji, program poczęstuje nas assertami, kiedy spróbujemy wykonać jakąś operacje na iteratorze bądź funkcji go wykorzystującej, w … Czytaj dalej Bezpieczne iteratory

Pointer to iterator II

Kontynuując temat konwersji wskaźnika do iteratora z poprzedniej notki, chciałbym rzucić nieco więcej światła i nowych spostrzeżeń jakie mnie naszły po popełnieniu wspomnianego wpisu, po którym nie mogłem spokojnie zasnąć ;) Rewidując ponownie ten problem pod katem wydajnościowym i nie tylko doszedłem do wniosku, że w ogóle taka operacja jest bez sensu, uzycie takiej operacji … Czytaj dalej Pointer to iterator II

Pointer to iterator

Czym jest iterator w STL każdy wiedzieć powinien. Mogę wspomnieć ze jest to typ z zachowaniem podobnym do wskaźnika, który służy do poruszania się po kontenerach biblioteki standardowej, ale nie jest to wskaźnik, mimo iż w większości implementacjach jest to opakowany w obiekt wskaźnik. Kilka flejmów na ten temat można znaleźć w usenetowych archiwach pl.comp.lang.c … Czytaj dalej Pointer to iterator

Prosty object tracing

Potrzebowałem w prosty sposób i łatwy sposób logować moment tworzenia i niszczenia obiektów. W najprostszym wypadku wystarczyłoby przeciążyć operator new i delete, ale wtedy logowanie dotyczyłoby tylko obiektów tworzonych na stercie. A ja chce i stos, i stertę ;) No to wystarczy w konstruktorze i destruktorze umieścić wywołanie funkcji logującej i problem znika. Tylko, że … Czytaj dalej Prosty object tracing

Alpha blending

Potrzebowałem uzyskać jak najprostszym sposobem efekt alpha blendingu, a z racji, że nie miałem o tym pojęcia, i nadal zbytnio nie mam o grafice 2/3D próbowałem zaczerpnąć informacji w niezliczonych zasobach sieciowych ;) Szukałem jakiegoś prostego sposobu wyznaczania średniej wartości składowej koloru danego piksela. W różnych źródłach znalazłem kilka różnych działań obliczających tą wartość, od … Czytaj dalej Alpha blending