flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
revolution
|
|||
![]() |
|
Overclick
Seems like idea is to use some sort of different names, but I think we can use files to store all subsections together.
|
|||
![]() |
|
Roman
Good macro somthing like this:
macro .dll [arg] { section '.idata' import data readable writeable library arg,`arg#'.DLL',\ import_#arg } In code: .dll kernel32,user32,gdi32 |
|||
![]() |
|
fasmnewbie
Overclick wrote: This is why I like masm -- simple sections, sticked together by compilation. I mean .code .data...Any macro can make parts for sections. What's wrong with fasm? I don't know man, the last time I tried, MASM's '.data' macro still unable to align to 32-byte boundaries. Horrible macro for dealing with YMM data. Had to move down to raw "dseg segment". I hope it is already fixed by now. |
|||
![]() |
|
Overclick
I did it
Code: macro .multisection entry_file { macro .data \{ end if if current='data' \} macro .idata \{ end if if current='idata' \} macro .code \{ end if if current='code' \} current='idata' section '.idata' import data readable writeable if current='idata' include entry_file end if current='data' section '.data' data readable writeable if current='data' include entry_file end if current='code' section '.text' code readable executable entry $ sub rsp,8 if current='code' include entry_file end if } .multisection 'MyWorkFile.asm' ![]() |
|||
![]() |
|
Roman
How use this ?
What code in MyWorkFile.asm ? |
|||
![]() |
|
Overclick
Put this macro on header/Main file or include it to there.
Write your program on some separate file then put it there by .multisection '<your program>' |
|||
![]() |
|
Overclick
Upd: Use it carefully with "fix" where you need it. Declare it before or after multisection.
|
|||
![]() |
|
Overclick
UPDATED RELEASE
![]() Code: macro .multisection [entry_file] { common macro proc [param] \{ end if if cuRRent='code' \} macro endp \{ end if if cuRRent='code' \} macro .data \{ end if if cuRRent='data' \} macro .idata \{ end if if cuRRent='idata' \} macro .code \{ end if if cuRRent='code' \} macro .comment \{ end if if cuRRent='comment' \} section '.idata' import data readable writeable cuRRent='idata' forward if cuRRent='idata' include entry_file end if common section '.data' data readable writeable cuRRent='data' forward if cuRRent='data' include entry_file end if common cuRRent='code' purge proc purge endp macro proc [param] \{ \common end if proc param if cuRRent='code' \} macro endp \{ end if endp if cuRRent='code' \} section '.text' code readable executable entry $ sub rsp,8 forward if cuRRent='code' include entry_file end if } FEATURES: 1. Linker. It will combine all your sections in all project files at same time. 2. Proc. You can use multisections inside procedures. 3. Unlimited sections any time you need it. 4. Easy to add some more kind of sections like .rsrc 5. Short names like masm .code .data (up to you actually) 6. No need of .end 7. Comment whole block by .comment Do not use fix inside linked files. Do not declare sections inside if operators. To enjoy it put(include) the macro to Header(Main file) then link your project files by: Code: .multisection '<your project file 1>','<your project file 2>','<your project file n...>' Last edited by Overclick on 09 Sep 2020, 23:45; edited 1 time in total |
|||
![]() |
|
Overclick
New feature:
.comment Code: macro .comment \{ end if if cuRRent='comment' \} Easiest way to comment whole block of code when you need it. Enjoy ![]() |
|||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.
Website powered by rwasa.