assembly - 我如何在 NASM x86 中定义宏
问题描述
我正在尝试为 x86 项目实现几个宏。我刚从 MARS mips 大会搬来,所以不要评判我的无能。我想我正在按照本指南中的方式做所有事情https://www.tutorialspoint.com/assembly_programming/assembly_macros.htm
%macro assign a,b
mov ax, [b]
mov [a], ax
%endmacro
这是我得到的错误:
fun.asm:21: error: `%macro' expects a parameter count
我也试过在值(a和b)之前用“%”做这个,但它只会产生语法错误
谁能指出我到底做错了什么?
解决方案
我认为您不能直接为这样的论点命名。相反,您提供您期望的参数数量并引用 with %1
、%2
等。所以您的宏看起来像这样:
%macro assign 2
mov ax, [%2]
mov [%1], ax
%endmacro
NASM 手册中有更多详细信息。
推荐阅读
- heroku - 从 Travis-CI 构建中设置 Heroku 环境变量值
- php - 使用 PHP 循环遍历嵌套的 JSON 数组
- java - 使用 Java 从 CSV 文件中读取
- javascript - React native 无法为 Image.source iOS 使用本地 tmp 文件路径
- javascript - 如何使上传的文件不能在php中使用字符名称
- elasticsearch - 基巴纳。从包含 JSON 的 @message 中提取字段
- linux - Talend 开放工作室
- php - 如何在 /wp-admin/* 中禁用缓存
- python - 将 XML 文件 (TED Europe) 提取到 pandas 数据框
- php - getimagesize ... 无法打开流:HTTP 请求失败!HTTP/1.1 400 错误请求