Label NASM x86_64,重新定义标签
我的目标是在Nasm代码的.data部分重新定义现有标签 预期的结果应该是现有内存标签被相同的过程覆盖 出现的错误消息如下:Label NASM x86_64,重新定义标签,label,nasm,Label,Nasm,我的目标是在Nasm代码的.data部分重新定义现有标签 预期的结果应该是现有内存标签被相同的过程覆盖 出现的错误消息如下: exp3.asm:230: error: comma, colon, decorator or end of line expected after operand exp3.asm:191: ... from macro `var' defined here exp3.asm:230: warning: character constant too long ex
exp3.asm:230: error: comma, colon, decorator or end of line expected after operand
exp3.asm:191: ... from macro `var' defined here
exp3.asm:230: warning: character constant too long
exp3.asm:191: ... from macro `var' defined here
exp3.asm:230: error: parser: instruction expected
exp3.asm:195: ... from macro `var' defined here
exp3.asm:231: error: comma, colon, decorator or end of line expected after operand
exp3.asm:191: ... from macro `var' defined here
exp3.asm:231: error: symbol `test' redefined
exp3.asm:195: ... from macro `var' defined here
exp3.asm:231: error: parser: instruction expected
exp3.asm:195: ... from macro `var' defined here
我试图改变词类,但这只是使问题复杂化,而不是解决问题
所需的宏:
%macro ifexis 3
push rax ; make room
mov rax, %1 ; platziere wert in Vergleichsregister
test rax, rax ; wenn werte gleich oder nicht leer
jz [%2] ; Gehe zu erfolg
jmp [%3] ; gehe zu fail
pop rax ; clear rax
%endmacro
通过将内容加载到RAX中,然后相互测试来检查该值是否存在
%macro var 2
ifexis %1, %%overwrite, %%establish ;<--------------------------------------- Für gleiche labels muss eine lösung gefunden werden
%%overwrite: ;<---------------------------------------------------------------
mov db[%1], %2 ;<-------------------------------------------------------------
jmp %%end;<-------------------------------------------------------------------
%%establish:;<----------------------------------------------------------------
section .data
%1: db %2
;db 0
section .text
%%end:
%endmacro
欢迎学习汇编程序的任何传统来源什么是
mov db[%1],%2
应该是什么意思?在任何情况下,我在NASM手册中都没有看到任何东西表明您正在尝试的操作是受支持的。你为什么需要这个呢?它应该得到mem地址,然后覆盖它,我调整了它你是对的错误:逗号,冒号,修饰符或行尾,在操作数现在被解决之后,应该是,但现在覆盖仍然显示在nasm中
section .text
global _start
_start:
var test, "a"
var test, "b"