flat assembler
Message board for the users of flat assembler.
Index
> Main > This code requires 65536 passes |
Author |
|
Roman 16 Jun 2023, 16:47
65535 this maximum for one rept ?
What will happen if write three rept ? rept 65534 L { } rept 65534 L { } rept 65534 L { } |
|||
16 Jun 2023, 16:47 |
|
revolution 16 Jun 2023, 18:21
Roman wrote: 65535 this maximum for one rept ? Roman wrote: What will happen if write three rept ? |
|||
16 Jun 2023, 18:21 |
|
revolution 02 Jul 2023, 09:19
With fasmarm v1.44 it is possible to have a source that maximises the usage of passes. The source requires all passes to complete.
Code: ~ for P in 11 43 69 123 5555 65536 ; do fasmarm maximal-passes.asm -p $P ; done flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 11 passes, 32 bytes. flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 43 passes, 32 bytes. flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 69 passes, 32 bytes. flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 123 passes, 32 bytes. flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 5555 passes, 32 bytes. flat assembler for ARM version 1.44 (built on fasm 1.73.30) (16384 kilobytes memory) 65536 passes, 32 bytes. The reason for this behaviour is the "oscillation problem" with instruction encoding dependent upon the alignment of the operands. The example code that can do this is very simple. Code: thumb rept 8 {local x adr r0,x x:} If you change ADR to ADR.W then the job of the assembler is simplified and it only needs two passes. The same is also true if you add ALIGN 4 before declaring x, only two passes are needed, because the alignment is guaranteed. |
|||
02 Jul 2023, 09:19 |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.