Recent Posts

Pages: [1] 2 3 ... 10
1
The Laboratory / Re: Benchmark testing different types of registers.
« Last post by hutch-- on Today at 02:42:38 AM »
JJ,

You need the latest macro file which is posted in the 64 bit MASM sub forum.

AW,

I put the identical copy code in all 3 to ensure there was a code action between the preserve and restore code as the very short tests skew the results due to their length.
2
Custom Interface Components / Re: ModernUI Framework & Controls
« Last post by fearless on Today at 02:24:50 AM »
At all excellent looks, but few remarks ;
Thanks.

1) code misaligned, look into m32lib\szcopy, there align present, so MUIButton1 on weak hardware hangs on exit as callback exception
I will add the align 4 to code sections on the main library and controls for x86 version (and align 8 to the x64 versions?). I wasnt aware of using alignment, or wasnt sure about it, hence why i never added it or done much with it. Hopefully adding the align will help make it all more stable. Did some changes to ModernUI_Button a while back, so the MUIButton1 example doesnt show the notify stuff correctly - think i will take out that stuff, as not sure its needed. Also possible the gdi+ stuff without the alignment might be causing the crash as someone mentioned a while back about the that example crashing and thought it was due to gdi+ (using the png's with the MUIButton) as the example makes use of the MUIGdiStart and MUIGdiFinish wrapper functions.


2) directory structure not ordonary, also was post here how it could be and build libraries system
I will add some more stuff to the wiki page soon about using the library and controls and where to place the include and lib files. Not sure what you meant by directory structure not ordinary. Can you expand on what that means, thanks.
I can add some information on building the library sources manually if someone isn't using the RadASM projects, let me know if you think this would be useful.


3) not all ico in Images catalogues
Im not sure if thats ico files not included with examples, or ico files in the icons folder/zip (which has a dark/light theme) are not all there, or are not converted to smaller/larger sizes or are not complete. Im assuming its the latter option - its possible some icons havent been converted to different sizes (or dark/light versions) - only done some as i was testing/using. Let me know if there is any specifically you need or think i should look at.

Thanks for the feedback, much appreciated :D
3
The Laboratory / Re: Benchmark testing different types of registers.
« Last post by AW on Today at 02:02:41 AM »
Hi Hutch,
If you comment out the mem mov instructions, namely:
   ;mov rsi, rcx
    ;mov rdi, rdx
    ;mov rcx, r8
    ;rep movsb
and perform the tests you will obtain 0 millseconds or close to it. Almost all the time is taken by that. I think you need to perform the test differently.
4
Custom Interface Components / Re: ModernUI Framework & Controls
« Last post by Adamanteus on Today at 02:01:28 AM »
At all excellent looks, but few remarks ;
1) code misaligned, look into m32lib\szcopy, there align present, so MUIButton1 on weak hardware hangs on exit as callback exception
2) directory structure not ordonary, also was post here how it could be and build libraries system
3) not all ico in Images catalogues
5
The Laboratory / Re: Benchmark testing different types of registers.
« Last post by jj2007 on Today at 01:18:17 AM »
Code: [Select]
  copy1 2043 int regs
  copy2 2059 xmm regs
  copy3 2059 mmx regs

I wanted to add a test saving them to [ebp+n] but it doesn't build: :(
Code: [Select]
Microsoft (R) Macro Assembler (x64) Version 14.10.24930.0
Copyright (C) Microsoft Corporation.  All rights reserved.

 Assembling: bmcopy.asm
bmcopy.asm(16) : error A2008:syntax error : r14
bmcopy.asm(18) : error A2008:syntax error : SaveRegs
bmcopy.asm(20) : error A2008:syntax error : HighPriority
bmcopy.asm(107) : error A2008:syntax error : NormalPriority
bmcopy.asm(110) : error A2008:syntax error : RestoreRegs
POLINK: fatal error: File not found: 'bmcopy.obj'.
6
The Laboratory / Re: Benchmark testing different types of registers.
« Last post by Siekmanski on Today at 12:22:31 AM »
 Intel(R) Core(TM) i7-4930K CPU @ 3.40GHz 

Warm up lap

  copy1 1953 int regs
  copy2 1922 xmm regs
  copy3 1922 mmx regs

  That's all folks ....
7
The Laboratory / Benchmark testing different types of registers.
« Last post by hutch-- on July 21, 2018, 11:40:19 PM »
I have needed to test if there is any measurable difference when preserving and restoring registers using 3 types of registers, the general purpose integer type, MMX and XMM registers. The benchmark uses a very simple "rep movsb" copy algo that has identical mnemonics and have used the three different register types to save and restore RSI and RDI.

I am not getting any meaningful differences between the three on this Haswell I work on and get the usual wander in results, even with high priority settings, a CPUID serialising instruction and a timed yield using SleepEx().

These are typical results and they wander with each run of the test piece.

 Warm up lap
  copy1 1906 int regs
  copy2 1922 xmm regs
  copy3 1984 mmx regs

  That's all folks ....
8
The Workshop / Re: Microsoft MASM bug
« Last post by daydreamer on July 21, 2018, 09:20:41 PM »
Most probably but I doubt it will ever be fixed as its really bad code to start with. If you want big memory, allocate it, that's what its designed for.
I am not sure if it's both. Data and. Data? Section or just one of them
I don't think it's bad code,I think the masm coder who wrote that part was thinking the same as you: big memory is allocated, dup should be used for create very small buffers ,so nobody tested dup for high numbers before release?
But if every byte needed = one alloc call * some milliseconds no wonder it takes time with high dup numbers
Anyone tested if dup 6554 real10's or bigger data sizes would make it 10 times faster than a 65536 dup with db?
9
ASMC Development / Re: Asmc source and binaries
« Last post by nidud on July 21, 2018, 08:53:55 PM »
Some new updates:
- added fix for flags ZERO? || CARRY? in hll
- fixed bug in using 0.0 as argument -- asin(0.0)
- allowed support for movq rax,xmm0

The combined flags are now rendered as LE (or GT):

_mm_comile_sd macro a, b
   comisd a, b
   retm<ZERO? || CARRY?>
   endm
_mm_ucomigt_sd macro a, b
   ucomisd a, b
   retm<!(ZERO? || CARRY?)>
   endm

    .if _mm_comile_sd(xmm0, xmm1)
    .if _mm_ucomigt_sd(xmm0, xmm1)

Code: [Select]
jz ?_001  ; -- old
jnc ?_002
?_001: nop
?_002: jz ?_003
jc ?_003
nop
        ...
ja ?_001  ; -- new
nop
?_001: jbe ?_002
nop

A float value of zero was rejected as argument so this is now fixed. REAL16 const values in vectorcall are now allowed. They will be moved directly to [rsp] and loaded to a corresponded vector:

foo proto vectorcall a1:real16

    foo(-3.0)

Code: [Select]
        mov     qword ptr [rsp], 0
        mov     rax, 0C000800000000000H
        mov     qword ptr [rsp+8H], rax
        movaps  xmm0, xmmword ptr [rsp]
        call    foo@@16

Some math functions are added:
- REAL4 (float) - fastcall
- REAL8 (double) - fastcall
- REAL10 (long double) - vectorcall
- REAL16 (__float128) – vectorcall

The REAL10 version is REAL16 vectors using the FPU.
10
ASMC Development / Re: Asmc source and binaries
« Last post by nidud on July 21, 2018, 07:56:19 PM »
However, I don't think you will find any of these algos included in msvcrt.dll.

Hi nidud,

Sorry if I am missing something but msvcrt.dll exports memcpy and a lot of traditional C functions :

What I suspect is that Microsoft never used ML64 in any 64-bit versions of Windows. The CRT assembler source supplied with VS do not correspond with any of the functions in the .dll files (msvcrt.dll in this case) as they do in 32-bit. There is also missing files there which makes it impossible to assemble any of the source supplied. The answer giving with regards to this also suggest 64-bit assembly is not a big priority for Microsoft.

This may explain the limitations of the assembler: they don't need it.
Pages: [1] 2 3 ... 10