Bitness Neutral Code

ObjAsm provides a code library called ObjMem in two flavours, 32-bit and 64-bit each of them in the corresponding “Code/ObjMem/32” and “Code/ObjMem/64” directory. A third directory called “Code/ObjMem/X” contains code that can be directly assembled in the target bitness. This is possible due to the use of a set of equates that maps the some type and register names to the correct word size. E.g. the xax register name is mapped to eax in 32-bit mode, whereas to rax in 64-bit mode. To simplify the use of some variables, the XWORD type was introduced. It is equivalent to the size_t C++ type.
The vast majority of the supplied objects, demos and projects were coded using BNC.
This feature is supported by the translated Windows® header files which was created using macros that change the API definitions accordingly to the target bitness.