flat assembler
Message board for the users of flat assembler.
Index
> Projects and Ideas > On the anniversary of fasm1.73.30 - fasmcore mod [fix No3] |
Author |
|
ProMiNick 21 Feb 2023, 18:26
Hello, community.
I glad to introduce fasmcore updates & new syntax that support stack tracking and it is ready for use. Fasm at new syntax is selfhosted, source fasmwold.asm for compile new core with legacy fasms are present too. Now you all could look & test how it is. Critics & suggestions are very appreciated. I would be happy if ideas of stack tracking would become a part of fasm1 or fasmg official releases. (As always my syntaxes not friend with win32ax.inc because some its features already part of win32a.inc (conflict due to duplication), nothing except win32a.inc not adapted to use with new syntax) [EDITED 22.02.2023]: attachment updated (part of mod in core left no changes, bug fixies & some optimizations in macros, all win32 examples ported to new syntax) [EDITED 22.02.2023 again]: attachment updated (part of mod in core left no changes, bug fixies & some optimizations in PUSHD macro, by analogy added PUSHQ macro for x64 mode) [EDITED 23.02.2023]: attachment updated (part of mod in core left no changes, by analogy added frame macro for x64 mode, again bug fixies & some optimizations in PUSHD & PUSHQ macro, added optimizations to locals covered support of both 32 & 64 bit, extended macroset in offmacro.inc) previous bugfix makes bug of inability of selfhosting - fixed (exactly in PUSHD macro)
_________________ I don`t like to refer by "you" to one person. My soul requires acronim "thou" instead. |
|||||||||||
21 Feb 2023, 18:26 |
|
luboput 27 Mar 2023, 16:58
а подробнее описать возможности для тех,кто не силён в теме ?
|
|||
27 Mar 2023, 16:58 |
|
Roman 27 Mar 2023, 17:06
ProMiNick upload video tutorials on youtube.
About new features and how using them. Not clear understood what is set of macros realizing that tracking. |
|||
27 Mar 2023, 17:06 |
|
ProMiNick 27 Mar 2023, 20:57
luboput wrote: а подробнее описать возможности для тех,кто не силён в теме ? предсказуемые изменения стека накапливаются в переменной stack_distance, ее значение можно использовать(считать) в любом выражении посредством токена %s. Для записи в переменную stack_distance используется конструкция stackorg новое_значение. Все локальные переменные декларируются так, что они содержат в себе константу значения stack_distance в момент их определения и переменную %s соответствующую значению stack_distance в момент их кодирования внутрь инструкции, так же переменные содержат флаги того через какой регистр производится расчет адреса переменной, через esp(rsp) или какой-то другой. Вокруг конструкций вызовов с аргументами, а также вокруг каждого jumpcase, вокруг которого есть такая необходимость, значение stack_distance сохраняется перед входом в такие конструкции и восстанавливается при выходе. Собственно все. А то что осталось. Окружение линукс гарантирует что на каждую процедуру стек аргументов будет выровнен на границу параграфа, и адресация относительно esp(rsp) и ebp(rsp) в таких условиях возможна, просто между локальными переменными и аргументами подфункций нужно зарезервировать соответствующее место. Окружение же windows не гарантирует, но и не требует выровненного стека аргументов в x86, но есть функции которые требуют, единственный способ достичь and esp, not $F после которого возможна будет только принудительная адресация через регистр отличный от esp(rsp). То же самое и под линукс, да и под 64бит винду, конечно вызывая АПИ там мы обязаны обеспечить выровненный стек аргументов, но если мы совершаем внутренний вызов - мы можем на это правило забить, а значит внутри подобных внутренних вызовов нам опять же придется делать and rsp, not $F после которого возможна будет только принудительная адресация через регистр отличный от esp(rsp). А еще линуксоиды привыкли заносить аргументы функций через мов а не через пуш... В общем х64 пока буксует в реализации... _________________ I don`t like to refer by "you" to one person. My soul requires acronim "thou" instead. |
|||
27 Mar 2023, 20:57 |
|
luboput 28 Mar 2023, 10:23
благодарю
|
|||
28 Mar 2023, 10:23 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.