Hello
I am happy that I have made great progress in the project
ObjAsm Fusion.
The main goals of the project were:
- Merging the project ObjAsm32 and ObjAsm64 in one
- Develop an assembler code that can be assembled as x86 and x64 regardless of the target bitness
- Integrate the latest translated C header files generated from the h2incX project
- Introduction of Namespaces
- Introduction of Annotations
- Revised and modernized tool chain
- Support library for 32 and 64 bit
- New documentation
The reason for merging both projects is maintainability. I’ll freeze
ObjAsm32 like it is today and
ObjAsm64 will not pass the beta phase. Instead,
ObjAsm will cover both projects with a common code platform. Much work has been done to support this idea from proof-of-concept up to the included project. The aim of the fusion project was to ensure the best compatibility with the previous projects.
The second pillar of the project is the
translated C/C++ header files. They are far from finished, but after the translation tool has been developed, missing files or new versions can be translated ad-hoc. The benefit of having the latest files is clear, but there are some challenges that needed to be addressed. One of them was naming conflicts.
The best solution was the introduction of the
namespace concept. At the implementation level, the names of objects and members are mangled. COM members are also mangled, but not interface names. Doing so we avoid naming conflicts with the declared API names or other symbols. Now you have full freedom to use the name you want and reuse the names even in different namespaces.
Another improvement is the use of
annotations. They are intended primarily for code analysis tools that will be released on a later stage.
The previous assembly tool chain has been completely revised using .cmd files. Sharing information with the RC compiler is implemented by pre-processing some files and automatically generating a file that is passed on. This strategy avoids synchronization issues but requires the use of the provided tools.
What will come next? The presented code base is not as complete as ObjAsm32. The code analysis tools need to be completed. For the
h2incX project, a GUID extraction tool should be coded to complete the sGUID.inc file.
Nevertheless, it is a good start point and for the moment, I uploaded a “teaser”, where the functionality can be checked.
As always, constructive comments are welcome! :t
Biterider