flat assembler
Message board for the users of flat assembler.
![]() Goto page 1, 2 Next |
Author |
|
revolution 07 May 2025, 07:42
bsr
Code: display bsr 01001b + '0' flat assembler version 1.73.31 (16384 kilobytes memory) 3 1 passes, 0 bytes. |
|||
![]() |
|
Roman 07 May 2025, 08:10
fasmw supported bsr ! wow ! Its cool.
Thanks. |
|||
![]() |
|
Roman 07 May 2025, 08:51
How about ror in fasmw macro?
Or how implement ror in fasmw macro? |
|||
![]() |
|
macomics 07 May 2025, 08:57
Roman wrote: How about ror in fasmw macro? Code: a = 7 shl 3 n = 3 a = 0xFFFFFFFF and (a shl (32-n)) and (a shr n) ; 32-bit ror display a + '0', 13, 10 b = 1048576 k = 10 b = 0xFFFFFFFFFFFFFFFF and (b shr (64-k)) and (b shl k) ; 64-bit rol c = 1 shl 32 i = 24 if i < 38 c = 0x7FFFFFFFFF and (c shl (39-i)) and (c shr i) ; 39-bit ror end if |
|||
![]() |
|
Roman 07 May 2025, 09:15
I get zero.
Code: n = 3 v = 6025 __@v1 = 0xFFFFFFFF and (v shl (32-n)) and (v shr n) mov ecx,__@v1 ; get zero must be 0x78900001 |
|||
![]() |
|
revolution 07 May 2025, 09:20
The shr and shl parts need to be ored together, then and with the 0xffffffff mask.
|
|||
![]() |
|
macomics 07 May 2025, 09:27
Code: macro display_int x { local ..u, ..v ..v = x ..u = 1 while ..u < ..v ..u = ..u * 10 end while if ..v = 0 display '0' else while ..u > 1 ..u = ..u / 10 display '0' + ..v / ..u ..v = ..v - ..u * ( ..v / ..u ) end while end if display ' ' } a = 6020 n = 3 BIT_MASK = 0xFFFFFFFF BIT_LENGTH = 32 a = ( BIT_MASK AND ( a shr ( BIT_LENGHT - n + 1 ))) OR ( BIT_MASK AND ( a shl n )) display_int a mov ecx, a Code: 48160 Last edited by macomics on 07 May 2025, 10:08; edited 1 time in total |
|||
![]() |
|
Roman 07 May 2025, 09:32
Thanks.
How about rol ? Last edited by Roman on 07 May 2025, 09:35; edited 1 time in total |
|||
![]() |
|
macomics 07 May 2025, 09:34
Roman wrote: must be 0x78900001 |
|||
![]() |
|
Roman 07 May 2025, 09:36
macomics
How about rol ? |
|||
![]() |
|
macomics 07 May 2025, 09:39
Code: use64 macro display_int x { local ..u, ..v ..v = x ..u = 1 while ..u < ..v ..u = ..u * 10 end while if ..v = 0 display '0' else while ..u > 1 ..u = ..u / 10 display '0' + ..v / ..u ..v = ..v - ..u * ( ..v / ..u ) end while end if display ' ' } a = 6025 n = 12 BIT_MASK = 0x7FFFFFFFFF BIT_LENGTH = 1 + bsr BIT_MASK a = ( BIT_MASK AND ( a shl ( BIT_LENGTH - n + 1 ))) OR ( BIT_MASK AND ( a shr n )) display_int a mov rcx, a Code: 517811994625 Last edited by macomics on 07 May 2025, 10:08; edited 1 time in total |
|||
![]() |
|
macomics 07 May 2025, 09:45
|
|||
![]() |
|
Roman 07 May 2025, 09:47
ror wrong result.
Code: n = 12 v = 6025 __@v1 = ( 0xFFFFFFFF AND ( v shr ( 32 - n ))) OR ( 0xFFFFFFFF AND ( v shl n )) I get 1789000h but must be 7890001h |
|||
![]() |
|
macomics 07 May 2025, 09:50
Roman wrote: ror wrong result. Last edited by macomics on 07 May 2025, 10:14; edited 2 times in total |
|||
![]() |
|
Roman 07 May 2025, 09:51
macomics
Try for ror n = 12 a = 6025 |
|||
![]() |
|
macomics 07 May 2025, 10:02
Roman wrote: Try Last edited by macomics on 07 May 2025, 10:14; edited 1 time in total |
|||
![]() |
|
macomics 07 May 2025, 10:03
It is 39-bit ror. Use BIT_MASK = 0xFFFFFFFF for 32-bit and BIT_MASK = 0xFFFFF for 20-bit
|
|||
![]() |
|
macomics 07 May 2025, 10:12
Code: use64 macro display_int x { local ..u, ..v ..v = x ..u = 1 while ..u < ..v ..u = ..u * 10 end while if ..v = 0 display '0' else while ..u > 1 ..u = ..u / 10 display '0' + ..v / ..u ..v = ..v - ..u * ( ..v / ..u ) end while end if display ' ' } a = 6025 n = 12 BIT_MASK = 0x7FFFFFFFFF BIT_LENGTH = 1 + bsr BIT_MASK a = ( BIT_MASK AND ( a shl ( BIT_LENGTH - n + 1 ))) OR ( BIT_MASK AND ( a shr n )) display_int a mov rcx, a Code: 517811994625
|
||||||||||
![]() |
|
Roman 07 May 2025, 10:14
I do this for ror:
Code: use32 n = 12 v = 6025 BIT_MASK = 0xFFFFFFFF __@v1 = ( BIT_MASK AND ( v shr ( 1 + bsr BIT_MASK - n ))) OR ( BIT_MASK AND ( v shl n )) mov eax,__@v1 ;IDA Pro show 1789000h I get 1789000h but must be 78900001h Code: mov eax,6025 ror eax,12 ;IDA Pro show 78900001h |
|||
![]() |
|
Goto page 1, 2 Next < Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2025, Tomasz Grysztar. Also on GitHub, YouTube.
Website powered by rwasa.