As you know, Microsoft ported the Windows operating system to ARM64. They've created a new ARM macro assembler which has similar command-line options (https://learn.microsoft.com/cpp/assembler/arm/arm-assembler-command-line-reference) to the ARM (ex-Keil) assembler and uses most of its directives with some differences (https://learn.microsoft.com/cpp/assembler/arm/arm-assembler-directives) but nonetheless it's not the same, as it's reference (https://learn.microsoft.com/cpp/assembler/arm/arm-assembler-reference) states:
QuoteThe armasm assembler that the ARM Developer website describes isn't the same as the Microsoft armasm assembler that's included in Visual Studio and is documented in this section.
If you run just "armasm64", it outputs the following:
QuoteMicrosoft (R) ARM Macro Assembler Version 14.39.33521.0 for 64 bits
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: armasm [<options>] sourcefile objectfile
armasm [<options>] -o objectfile sourcefile
armasm -h for help
<options>: (Upper case shows allowable abbreviation)
-Errors errorsfile redirect stderr diagnostics to errorsfile
-I dir[;dir] add dirs to include search path
-PreDefine directive pre-execute a SET{L,A,S} directive
-NOWarn turn off warning messages
-ignore <warning-num> don't report warning-num
-help help (this information)
-via <file> read further arguments from <file>
-machine <machine> set the PE machine type field
-g generate debugging info
-gh:SHA1 use SHA1 for file checksum in debug info
-gh:SHA_256 use SHA256 for file checksum in debug info (default)
-funcOverride:<func> emit function overriding support for <func>
-errorReport:<option> deprecated. Report internal assembler errors to Microsoft
none - do not send report
prompt - prompt to immediately send report
queue - at next admin logon, prompt to send report (default)
send - send report automatically
<machine>: ARM64 | ARM64EC
Some info of Windows ARM OS
Windows on Arm (https://learn.microsoft.com/en-us/windows/arm/overview)
Thanks! I think that of all ARM64-based computers by Acer, Apple, Asus, Dell, HP, Lenovo, Microsoft, Samsung, etc, Apple Silicon Macs are the most popular. Alas, Boot Camp, which allowed Windows installation on the Intel-based Macs, isn't available for Apple Silicon Macs. But Windows can still be installed there – on a virtual machine running at native speed – via the now free VMware Fusion. Here's an article (text + images + video) showing how to do that in 39 (!) steps:
https://9to5mac.com/2024/08/24/how-to-install-windows-11-arm-apple-silicon-mac-free-vmware-fusion-13-pro-video/ (https://9to5mac.com/2024/08/24/how-to-install-windows-11-arm-apple-silicon-mac-free-vmware-fusion-13-pro-video/)
Hi lucho,
Talking about armasm64, how is the situation of the high level constructs \ HLL of this assembler? As you know, ml64 does not offer a built-in invoke macro.
I don't see anything like INVOKE there either. The closest one IMHO is MACRO (https://developer.arm.com/documentation/dui0802/b/Directives-Reference/MACRO-and-MEND), but this follows from the very name of the assembler (Macro Assembler).
It turns out that ARM regards (https://developer.arm.com/documentation/100067/0611/armclang-Command-line-Options/-masm) the ARMASM assembler (and hence the compatible Microsoft ARM Macro Assembler) as "legacy" (obsolete):
QuoteArm recommends that you migrate all legacy armasm syntax assembly source files into GNU syntax assembly source files. For more information, see Migrating from armasm to the armclang integrated assembler (https://developer.arm.com/docs/100068/0611/migrating-from-armasm-to-the-armclang-integrated-assembler) in the Migration and Compatibility Guide.
Here is a reference (https://developer.arm.com/documentation/100067) for the
armclang integrated assembler, which is compatible with the GNU Assembler (https://sourceware.org/binutils/docs/as/). By the way,
clang is a part not only of Microsoft Visual Studio but there is also a variant of
mingw (https://github.com/mstorsjo/llvm-mingw/releases) based on it (host architecture is given just before the
.zip suffix, and for each host architecture, there are compilers for several target architectures, including
aarch64).