Type checked MASM and objected oriented code.

  • DNS Benchmark v2 Release 5 with Consultant License
    Guest:
    If you own any earlier release of our DNS Benchmark you may immediately download its release #5 replacement. Running an earlier release will detect the new release and help you upgrade.

    Although this release is cosmetic, appearance matters and affects ease of use. The biggest change, as seen in the image above, is that the DNS Benchmark now has a traditional Windows application menu to more fully expose its many features. This release is also "Consultant License Aware" and GRC will now issue a Consultant version when owners have previously purchased four "Personal Use" licenses. If you have previously purchased four DNSB licenses, or if you wish to upgrade your "Personal Use" license to Consultant, GRC's purchase process will direct you through that process.
    /Steve.
  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

    /Steve.
  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

coffeeprogrammer

Well-known member
Jul 19, 2021
232
20
@Steve said the other day that his assembler is type checked. He once responded to a posting were I was asking about design patterns. I was watching the trainsec.net course on C++ (very detailed BTW) and I was wondering if a person could somehow write object oriented MASM code? When I was thinking it about it I was thinking that it would likely involve using pointers in the Assembler, as I *think* (it has been a while since I was detailed on this) C++ just uses a virtual pointer table for object orientation and polymorphism. I feel confident that the trainsec.net course will bring those details back to my mind.

So I guess my question for @Steve is do you write anything like object oriented code in your MASM code? Are any of your free or commercial applications using anything like object oriented code? Am I understanding correctly that normally MASM is not typed checked, unless the programmer would need to work out a way to do that? The way I am thinking about MASM or assembler currently is that the data does not really even have a type, it is up to the programmer to be aware or use the data correctly. Of course these questions can be asked of the LLMs.

I first tried writing an assembler program in 2019, which was a bounce ball program that I ported from Petzold’s C code from the Programming Windows book. It was a huge mess and I remember it took quite a long time, I had a lot of gaps in my knowledge. Then I found some courses on Udemy, which were helpful, but did not cover MASM specifically. The biggest change has been LLMs, they don’t write super great code (in assembler anyway), but they make it easy enough to understand when I step though with a debugger, I can start to figure out ways of improving the code.
 
I just wanted to paste this here, I noticed people view my posts, so I don't know if this is helping people. Basically I am making sure I understand how to view the contents of variables using VisualStudio's watch windows for MASM programming. ChatGPT and github copilot using Vs2022 helped me write this. I am going to try and make a custom complex data structure and see if I can see its contents in the watch window shortly. In many of Steve's asm screenshots it looks like his is using his own types. With the type checking I am am thinking that he is using a custom macro. The MASM Programmer Guide from 1992 might explain all that and the use of Macros. Ms Learn does not seem like it has that great of documentation for MASM.

1753055077243.png