News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

ObjAsm32 1.3e released!

Started by Biterider, February 08, 2006, 08:17:17 AM

Previous topic - Next topic

Biterider

Hi
I've uploaded our new ObjAsm32 revision 1.3e. The main goals of this revision are:

- ObjAsm32 model improvements:

  • Method call improvements (OCall, ACall, etc).
  • Invoke have been completely replaced to allow a more flexible argument handling.
  • Extended argument calling convention (like STDCALL but supports VARARG, see Array object).
  • When using a variable number of arguments, the argument count is passed implicitly.
  • Collection iterators have been adapted to handle variable number of arguments.
  • Embedded and local objects.
  • Early method binding using BoundMethod.
  • Stack protection system (StkGuard).
  • Documentation updated.
- ObjAsm32 AddIn for RadASM:

  • Supports new features like Embed and LNew.
  • OCall supports symbolic information.
  • Open Ancestors added to the context and Edit menus.
- Examples and project reworked to show the new features.
- New DSP library.
- SAPI 5.1:

  • Interface file.
  • Demo application.
- DirectX support files improvements (DX9/DX10 Dec 2005).
- Neural Net translation.

As you can seen in the above listing, we have completely replaced the ?invoke? internal macro for the method calling. This has given us a greater degree of flexibility for the OCall, ACall, etc. macros.
Now you don?t have to worry about the registers you use to pass your arguments, since the indirection is done immediately before the call instruction and after the pushing of the method arguments. Another strong point is the variable argument passing introduced here. Until today, you had to declare the methods as C procedures. This isn?t necessary now, since ObjAsm32 detects this situation and handles all details like pushing the arguments and correcting the stack on return if it is required automatically. As a bonus, the number of arguments is passed in the ecx register.

One of the most important model enhancements is the introduction of early binding methods. These methods are hard bound at compile time and no indirection takes place. That means that they are a bit faster than static or dynamic methods at a cost of less flexibility. To define such early binding methods a new method type was introduced: BoundMethod.

Now it is easier to embed an object into another object using the Embed macro. To facilitate the calling of such embedded objects, the method calling macros (OCall, ACall, etc.) can handle symbolic references to them and generate automatically the address needed to be called.

Local objects are designed to be placed on the procedure stack. Such objects lifecycle are limited to the execution of the method or procedure and no allocation and destruction are necessary. For critical methods, this can speedup the code considerably.

We introduced a stack control system called ?StackGuard?. It works like the /GS C++ switch. A demo has been added in the projects folder.

The RadAsm Addin has been updated to support all new model features. It requires at least RadAsm version 2.2.0.6. A new menu item has been added to the context menu to open all ancestor objects of a selected object. This helps the user the rapidly trace the code through the whole inheritance tree.

The DirectX files were updated to support the latest DX9 / DX10 (Dec. 2005).

A translation work of a Neural Net was added. The classical XOR problem was showed.

The Sound API (SAPI 5.1) was translated and a demo application was added to the projects folder.

As usual, the download link is ObjAsm32.

Regards,

Biterider