Welcome to strchr, a wiki where you can share your programming tips and contribute to research projects.

Work in progress

Inlined and optimized functions can be used as macros.

Discussion: the first language NEWPAGE

What programming language to learn first?

Recommended books and sites

The minimal reading list to become a good programmer.

Algorithms

Benchmark program for hash tables and comparison of 15 popular hash functions.

Multi-stage tables for storing Unicode character properties

A data structure for storing the properties of Unicode characters.

Plural forms

Spelling messages like "1 file found" or "5 files found" correctly in any language.

Using ternary DAGs for spelling correction

A ternary DAG structure for storing dictionaries.

Searching for duplicate files

Designing an effective algorithm for finding identical files.

Assembly language and machine code

One-page reference for Win32 assembly language programming.

x86 machine code statistics

Which instructions and addressing modes are used most often. What is the average instruction length.

Machine code redundancy

One assembly language instruction can be encoded differently in machine code. Possible applications are steganography and compiler identification.

Low-level code optimization

How to make you code shorter and easier to maintain by using arrays.

What your compiler can do for you

You should not obfuscate you code with low-level optimizations: your compiler can do them for you.

Performance measurements with RDTSC

A method for measuring performance with RDTSC instruction.

Optimized abs function

Branchless abs function for x86 processors.

Optimized strlen function

Unrolling the loop in strlen function.

SSE2 optimised strlen NEWPAGE

Optimising strlen function using SSE2 SIMD instructions.

Sentinel for string manipulations

A method for optimizing search functions.

Strcmp and strlen using SSE 4.2

Using new Intel Core i7 instructions to speed up string manipulation.

Standard deviation in one pass

An example of using algebraic transformations for code optimization.

Checking if point belongs to interval

How to replace two comparisons with one.

Interfaces

Designing a database interface for web programming.

Software interface design tips

How to design easy-to-use interfaces between modules of your program.

Interpreters and compilers

Designing and implementing a small expression compiler to native x86 code.

1. Expression evaluator

2. Code generator

3. Reverse Polish Notation

4. Variables in expression compiler

Win32 programming

Techniques for creating SFX archives and interpreters.

The perils of alloca function

alloca is useful for small arrays or strings, but can be dangerous if the array is larger than you expected.

Enabling additional compiler warnings

How to catch more bugs with MSVC++.

Detecting access to freed memory

Improving MSVC++ free function.

Debugging buffer overflows

A technique for debugging complex parsers.

Corrections to Raymond Chen's wheel scrolling code

For one rotation of the wheel, never scroll the window by more than one page.

Dark corners in Microsoft's documentation

Locale IDs are hexadecimal. Saving user data on shutdown.

About this wiki

 
start.txt · Last modified: 2009/10/08 06:50 by Peter Kankowski
 
Recent changes RSS feed Creative Commons License Driven by DokuWiki