Type checked MASM and objected oriented code.

  • DNS Benchmark v2 is Finished and Available!
    Guest:
    That's right. It took an entire year, but the result far more accurate and feature laden than we originally planned. The world now has a universal, multi-protocol, super-accurate, DNS resolver performance-measuring tool. This major second version is not free. But the deal is, purchase it once for $9.95 and you own it — and it's entire future — without ever being asked to pay anything more. For an overview list of features and more, please see The DNS Benchmark page at GRC. If you decide to make it your own, thanks in advance. It's a piece of work I'm proud to offer for sale. And if you should have any questions, many of the people who have been using and testing it throughout the past year often hang out here.
    /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