flat assembler
Message board for the users of flat assembler.

Index > Macroinstructions > variable virtual base (fasm)

Thread Post new topic Reply to topic

Joined: 24 Mar 2012
Posts: 700
Location: Russian Federation, Sochi
ProMiNick 28 Oct 2019, 10:09
Is it possible to make variable virtual base

for example
virtual at esp+espFix ; like define analog vs equ
        ofn OPENFILENAME
end virtual


mov     [ofn.hInstance],eax

it is not problem to add adder manualy.
Even more that could be achieved via macro
but may be there a way to got variable base to virtual in "out-of-the-box" way?
macro varvirtual definition& {
        match =at addr, definition \{
                macro @virtual@ name,def,val& \\{
                        local ..var
                        ..var def val
                        define name ..var+addr \\}

                macro endv \\{
                        purge label,@virtual@,endv
                        restruc db,du,dw,dp,dd,dt,dq
                        restruc rb,rw,rp,rd,rt,rq
                        end virtual \\}

                macro label def \\{ match . type,def> \\\{ @virtual@ .,label,<type \\\} \\}
                struc db [val] \\{ \common @virtual@ .,db,val \\}
                struc du [val] \\{ \common @virtual@ .,du,val \\}
                struc dw [val] \\{ \common @virtual@ .,dw,val \\}
                struc dp [val] \\{ \common @virtual@ .,dp,val \\}
                struc dd [val] \\{ \common @virtual@ .,dd,val \\}
                struc dt [val] \\{ \common @virtual@ .,dt,val \\}
                struc dq [val] \\{ \common @virtual@ .,dq,val \\}
                struc rb cnt \\{ @virtual@ .,rb cnt, \\}
                struc rw cnt \\{ @virtual@ .,rw cnt, \\}
                struc rp cnt \\{ @virtual@ .,rp cnt, \\}
                struc rd cnt \\{ @virtual@ .,rd cnt, \\}
                struc rt cnt \\{ @virtual@ .,rt cnt, \\}
                struc rq cnt \\{ @virtual@ .,rq cnt, \\}

                virtual at 0 \} }    

varvirtual at var
        A dd ?

var = 0
db A dup 0 ; produce 0 bytes
var = var+3
db A dup 0 ; produce 3 bytes    

I don`t like to refer by "you" to one person.
My soul requires acronim "thou" instead.
Post 28 Oct 2019, 10:09
View user's profile Send private message Send e-mail Reply with quote
Tomasz Grysztar

Joined: 16 Jun 2003
Posts: 8098
Location: Kraków, Poland
Tomasz Grysztar 28 Oct 2019, 10:58
The linear polynomial handler in fasm 1 is very limited compared to the one in fasmg (even though the latter was heavily inspired by the former), so I don't think there is a nice and simple solution. But perhaps adding some artificial pseudo-register for addressing into symbol tables could help.
Post 28 Oct 2019, 10:58
View user's profile Send private message Visit poster's website Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  

< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Copyright © 1999-2023, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.

Website powered by rwasa.