News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Survey for 64-bit coders

Started by jj2007, July 14, 2023, 06:55:19 PM

Previous topic - Next topic

jj2007

Some of our members are active in 64-bit land, and I have a few questions to them:
- which assembler and/or package are you using?
  1. Masm64 SDK
  2. UAsm (download)
  3. AsmC
  4. Dual 64- and 32-bit Assembly
  5. PoAsm
  6. Other: ...

- which include files (please provide links to the latest version)?
- which libraries (please provide links to the latest version)?

The reason for this survey is that there are several competing approaches, with pros and cons, and sooner or later we should work on one of them to make it easier for beginners to do their first steps in 64-bit land.

Please just reply to the questions, so that we can get a first impression who is doing what. The collection phase for this thread may take a week, since many members are not always active, so be patient.

To discuss the options, there is a separate thread called 64-bit Assembly: The Best Approach.

I will start the survey:
- No. 4, dual assembly (sometimes also No. 1, Masm64 SDK)
- include files provided with the package
- no specific libraries, i.e. WinAPI only

I admit that 90% of my coding is still in 32-bit land :tongue:

HSE

assembler:
   - UAsm
   - ML64
   - JWasm

include files:
   - ObjAsm Package
   - Masm64 SDK, downloded 10/05/2022, with some macros updates, mostly Invoke (I have to see if Hutch included some modifications in JAN_20)
   - no includes.

libraries:
   - ObjAsm Package.
   - Masm64 SDK.
   - No libraries.

:biggrin: Combined in that order!!

Just in case:

  - UAsm with ObjAsm Package, for big neutral bitness applications (but most working apps still are 32 bits).

  - ML64 with Masm64 SDK, for developments, test and also some console applications.

  - Jwasm, to develop small libraries (esentially for SmplMath) mostly without includes and libraries. So far, some tests are using Masm64 SDK library.
Equations in Assembly: SmplMath

BugCatcher

RadAsm 3
ml64
visual studio 2022 binaries

fearless

#3
x86

IDE:
  • Radasm 2
Binaries:
  • Microsoft (R) Macro Assembler Version 6.14.8444 (from MASM32 SDK v11)
  • Microsoft (R) Incremental Linker Version 12.00.31101.0 (taken from a Visual Studio installation)
  • Microsoft (R) Library Manager Version 12.00.31101.0 (taken from a Visual Studio installation)
  • Microsoft (R) Windows (R) Resource Compiler Version 6.3.9600.17336 (taken from a dot net installation)
Support Files:
  • MASM32 SDK Includes
  • MASM32 SDK Libraries
Debugger:
  • x64dbg (https://github.com/x64dbg/x64dbg)



x64

IDE:
  • Radasm 2
  • UASM-with-RadASM (https://github.com/mrfearless/UASM-with-RadASM)
Binaries:  
  • UASM v2.56, Oct 25 2022, Masm-compatible assembler. (https://www.terraspace.co.uk/uasm.html)
  • Microsoft (R) Incremental Linker Version 12.00.31101.0 (taken from a Visual Studio installation)
  • Microsoft (R) Library Manager Version 12.00.31101.0 (taken from a Visual Studio installation)
  • Microsoft (R) Windows (R) Resource Compiler Version 6.3.9600.17336 (taken from a dot net installation)
Support Files:  
  • WinInc Includes (https://www.terraspace.co.uk/WinInc210.zip)
  • Windows Kit Libraries / Windows SDK Libraries (https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
Debugger:  
  • x64dbg (https://github.com/x64dbg/x64dbg)

Greenhorn

- AsmC
- AsmC includes
- AsmC libs
Kole Feut un Nordenwind gift en krusen Büdel un en lütten Pint.

mabdelouahab

    - Linux operating system
    - UASM
    - No includes.
    - The GNU C Library .


NoCforMe

How do you code without any includes? Where do the values for all those symbolic constants come from?
Assembly language programming should be fun. That's why I do it.

HSE

Quote from: NoCforMe on July 15, 2023, 07:03:42 AM
How do you code without any includes? Where do the values for all those symbolic constants come from?

:biggrin: You make your own basic functions, and you write your own includes for that functions. That is true specially for libraries, but simple console programs can requiere very few external things (and can be made internals!).
Equations in Assembly: SmplMath

NoCforMe

Quote from: HSE on July 15, 2023, 07:31:47 AM
Quote from: NoCforMe on July 15, 2023, 07:03:42 AM
How do you code without any includes? Where do the values for all those symbolic constants come from?

:biggrin: You make your own basic functions, and you write your own includes for [those] functions.

OK, I just gotta ask: let's say you're doing some printing, and you need to get some printer info using the DeviceCapabilities() function, which you've never used before. So that means you've got to define the DEVMODE structure, which looks like this (in C, of course, which you'll have to translate to an asm STRUCT):


typedef struct _devicemode {
  TCHAR dmDeviceName[CCHDEVICENAME];
  WORD  dmSpecVersion;
  WORD  dmDriverVersion;
  WORD  dmSize;
  WORD  dmDriverExtra;
  DWORD dmFields;
  union {
    struct {
      short dmOrientation;
      short dmPaperSize;
      short dmPaperLength;
      short dmPaperWidth;
      short dmScale;
      short dmCopies;
      short dmDefaultSource;
      short dmPrintQuality;
    };
    struct {
      POINTL dmPosition;
      DWORD  dmDisplayOrientation;
      DWORD  dmDisplayFixedOutput;
    };
  };
  short dmColor;
  short dmDuplex;
  short dmYResolution;
  short dmTTOption;
  short dmCollate;
  TCHAR dmFormName[CCHFORMNAME];
  WORD  dmLogPixels;
  DWORD dmBitsPerPel;
  DWORD dmPelsWidth;
  DWORD dmPelsHeight;
  union {
    DWORD dmDisplayFlags;
    DWORD dmNup;
  };
  DWORD dmDisplayFrequency;
#if (WINVER >= 0x0400)
  DWORD dmICMMethod;
  DWORD dmICMIntent;
  DWORD dmMediaType;
  DWORD dmDitherType;
  DWORD dmReserved1;
  DWORD dmReserved2;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
  DWORD dmPanningWidth;
  DWORD dmPanningHeight;
#endif
#endif
} DEVMODE, *PDEVMODE, *LPDEVMODE;


So you mean to tell me you're OK typing all that crap in (after translating it)? I couldn't imagine programming for Win32 without include files; that would truly be a pain in the ass. So why no includes?

Yet another reason for me to never, ever want to even go near 64-bit assembler!
Assembly language programming should be fun. That's why I do it.

HSE

 :biggrin: :biggrin:  In the end, the trick is: you don't use includes if you don't need them.

Anyway I'm going to tell you a secret, something new: you can copy and paste :thumbsup:
Equations in Assembly: SmplMath

daydreamer

I only coded few programs made in the first halfbaked 64 bit instruction set: MMX
If i switch to 64 bit,should think best ways are
To switch to the 64 bit assembler used by most forum members to get most info teach/learn things between members
Worst choice would be end up the lonely road of the assembler only i want to use
my none asm creations
https://masm32.com/board/index.php?topic=6937.msg74303#msg74303
I am an Invoker
"An Invoker is a mage who specializes in the manipulation of raw and elemental energies."
Like SIMD coding

jj2007

Quote from: HSE on July 15, 2023, 07:31:47 AM
Quote from: NoCforMe on July 15, 2023, 07:03:42 AM
How do you code without any includes? Where do the values for all those symbolic constants come from?

:biggrin: You make your own basic functions, and you write your own includes for that functions. That is true specially for libraries, but simple console programs can requiere very few external things (and can be made internals!).

For structures, you may use the Convert C/C++ structure to MASM format tool :thumbsup:

Quote from: NoCforMe on July 15, 2023, 10:29:29 AMSo that means you've got to define the DEVMODE structure

And you may some minor editing, depending on the complexity of the structure:
DEVMODE STRUCT
dmDeviceName TCHAR CCHDEVICENAME dup(<>)
dmSpecVersion WORD ?
dmDriverVersion WORD ?
dmSize WORD ?
dmDriverExtra WORD ?
dmFields DWORD ?
UNION
???? struct <>
   dmOrientation SWORD ?
   dmPaperSize SWORD ?
   dmPaperLength SWORD ?
   dmPaperWidth SWORD ?
   dmScale SWORD ?
   dmCopies SWORD ?
   dmDefaultSource SWORD ?
   dmPrintQuality SWORD ?
ENDS
???? struct <>
dmPosition POINTL <>
dmDisplayOrientation DWORD ?
dmDisplayFixedOutput DWORD ?
DEVMODE ENDS

.DATA?
align 16
devmode DEVMODE <>

NoCforMe

But my question still remains, why would anyone want to not use includes? Isn't that like trying to run a race with heavy weights strapped to your feet? Is this some kind of "purity" thing?

I guess if you only wrote code that rarely uses any Windows GDI stuff it might make sense ...
Assembly language programming should be fun. That's why I do it.

zedd151

#13
Quote from: mabdelouahab on July 15, 2023, 06:55:42 AM
    - Linux operating system
    - UASM
    - No includes.
    - The GNU C Library .
  Bold mine, for emphasis

Quote from: NoCforMe on July 16, 2023, 04:25:53 AM
But my question still remains, why would anyone want to not use includes? Isn't that like trying to run a race with heavy weights strapped to your feet? Is this some kind of "purity" thing?

I guess if you only wrote code that rarely uses any Windows GDI stuff it might make sense ...

mabdelouahab is running linux, not Windows. Also GNU C Library, possibly using parts of translated C headers (in source file==no includes)

Maybe it is much different coding for linux than writing code for Windows.   :icon_idea:  Apples vs Oranges kind of thing.

Perhaps mabdelouahab may come back and correct or verify my assumptions?


.

HSE

Quote from: NoCforMe on July 16, 2023, 04:25:53 AM
But my question still remains, why would anyone want to not use includes?

:biggrin: You don't use a walking stick unless you need that.


Quote from: NoCforMe on July 16, 2023, 04:25:53 AM
I guess if you only wrote code that rarely uses any Windows GDI stuff it might make sense ...

Exactly  :thumbsup:
Equations in Assembly: SmplMath