ARM 汇编程序命令行参考

Microsoft ARM 汇编程序、armasm 和 armasm64 支持多个命令行选项。 默认情况下,armasm 将 ARMv7 Thumb 汇编语言组合到通用对象文件格式 (COFF) 的 Microsoft 实现中。 armasm64 汇编程序为 ARM64 和 ARM64EC 目标创建 COFF 对象代码。 链接器可以链接 ARM 汇编程序和 C/C++ 编译器生成的 COFF 代码对象。 它可以与文档管理程序创建的对象库链接在一起。

语法

armasm [options] source_fileobject_file
armasm [options] source_file

armasm64 [options] source_fileobject_file
armasm64 [options] source_file

参数

options
零个或零个以上下列选项的组合:

  • -16
    仅在 armasm 中可用。 将源汇编为 16 位 Thumb 指令。 此选项为默认值。

  • -32
    仅在 armasm 中可用。 将源汇编为 32 位 ARM 指令。

  • -coff_thumb2_only
    仅在 armasm 中可用。 仅允许 Thumb-2 代码。

  • -errorReport:option
    此选项已弃用。 在 Windows Vista 及更高版本中,错误报告由 Windows 错误报告 (WER) 设置控制。

  • -errorsfilename
    -efilename
    将错误和警告消息重定向到 filename。 默认情况下,这些消息发送到 stdout

  • -funcOverride:function_name
    仅在 armasm64 中可用。 发出重写对 function_name 的支持的函数。

  • -g
    生成调试信息。

  • -gh:SHA1
    使用 SHA-1 加密哈希算法在调试信息中生成每个源文件的校验和。 重写 -gh:SHA256

  • -gh:SHA256
    使用 SHA-256 加密哈希算法在调试信息中生成每个源文件的校验和。 此选项在 Visual Studio 2022 版本 17.0 及更高版本中默认启用。

  • -guard:ehcont[-]
    为二进制文件生成所有有效异常处理延续目标的相对虚拟地址 (RVA) 的排序列表。 它在运行时用于 NtContinueSetThreadContext 指令指针验证。 默认情况下,-guard:ehcont 处于关闭状态,必须显式启用。 若要显式禁用此选项,请使用 -guard:ehcont-。 此选项在 Visual Studio 2019 版本 16.7 及更高版本中可用。 64 位操作系统上的 64 位进程支持该功能。

  • -help
    -h
    输出命令行帮助消息。

  • -idir[;dir]
    将一个或多个指定目录添加到 include 搜索路径。 使用分号 (;) 分隔目录。

  • -ignorewarning_number
    禁用指定的警告编号。 有关可能的值,请参阅 ARM 汇编程序诊断消息

  • -listlist_file
    创建生成的汇编语言的详细列表,将其列到 list_file 中。 list_file 参数是可选的。 如果省略它,汇编程序会将 .lst 追加到 source_file 的基名称以创建列表文件。

  • -machine计算机
    指定要在 PE 头中设置的计算机类型。 在 armasm 中,machine 的可能值为:

    • ARM - 将计算机类型设置为 IMAGE_FILE_MACHINE_ARMNT。 此选项为默认值。
    • THUMB - 将计算机类型设置为 IMAGE_FILE_MACHINE_THUMB

    在 armasm64 中,可能的值为:

    • ARM64 - 将计算机类型设置为 IMAGE_FILE_MACHINE_ARM64。 此选项为默认值。
    • ARM64EC - 将计算机类型设置为 IMAGE_FILE_MACHINE_ARM64EC
  • -noesc
    -noe
    忽略 C 样式转义特殊字符,例如 \n\t

  • -nologo
    禁止显示版权横幅。

  • -nowarn
    -now
    禁用所有警告消息。

  • object_file-o
    指定对象(输出)文件的名称。 -o 选项是可选的;你可以改将对象文件名指定为命令行的最后一个元素。

  • -oldit
    仅在 armasm 中可用。 生成 ARMv7 样式的 IT 块。 默认情况下,会生成与 ARMv8 兼容的 IT 块。

  • -predefinedirective
    -pddirective
    指定 SETA、SETL 或 SETS 指令来预定义符号。
    示例: armasm.exe -predefine "COUNT SETA 150" source.asm
    有关详细信息,请参阅 ARM 编译器 armasm 参考指南

  • -sourcelink:sourcelink_filename
    sourcelink_filename 指定 JSON 格式的配置文件,其中包含从本地文件路径到 URL 的简单映射,以便源文件显示在调试程序中。 有关此文件的格式的详细信息,请参阅源链接 JSON 架构。 源链接是一个与语言和源代码管理无关的系统,用于为二进制文件提供源调试。 从 Visual Studio 2017 版本 15.8 开始,原生二进制文件支持源链接。 有关源链接的概述,请参阅源链接。 若要了解如何在项目中使用源链接以及如何在项目中生成 SourceLink 文件,请参阅使用源链接

  • -viafilename
    从 filename 读取额外的命令行参数。

source_file
源文件名。

object_file
命令行的最后一个元素可以指定对象(输出)文件的名称。 如果省略它,并且未指定 -o 选项,则汇编程序会将 .obj 追加到 source_file 的基名称以创建对象文件。

备注

以下示例演示如何在典型方案中使用 armasm。 首先,使用 armasm 将汇编语言源 (.asm) 文件生成到对象 (.obj) 文件中。 然后,使用 CL 命令行 C 编译器编译源 (.c) 文件,并指定链接器选项来链接 ARM 对象文件。

armasm -o myasmcode.obj myasmcode.asm 
cl myccode.c /link myasmcode.obj

另请参阅

ARM 汇编程序诊断消息
ARM 汇编程序指令