News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Recent posts

#1
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by jj2007 - Today at 01:14:58 AM
Quote from: daydreamer on Today at 12:54:02 AMmysterious error,alignedinvoke.exe wont work
Just run it through Olly and tell me where it chokes. Btw no MasmBasic there, it's purest Masm32 :cool:
#2
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by daydreamer - Today at 12:54:02 AM
mysterious error,alignedinvoke.exe wont work
trying to run on my Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz   2.71 GHz

==== TEST #1 CALLER ==============================================================
invoke: 50.18710        call: 50.59600  jmp: 40.59940  jmp_pushing: 50.62870
invoke: 50.36980        call: 50.26210  jmp: 39.60170  jmp_pushing: 49.22990
invoke: 50.34560        call: 50.01550  jmp: 39.10610  jmp_pushing: 49.39480
invoke: 49.55790        call: 49.84430  jmp: 41.38590  jmp_pushing: 49.39870
invoke: 49.82790        call: 51.69810  jmp: 39.37860  jmp_pushing: 49.14690
invoke: 49.76570        call: 49.43420  jmp: 39.39750  jmp_pushing: 49.25080
invoke: 49.87010        call: 49.50440  jmp: 39.13950  jmp_pushing: 48.83730
invoke: 49.24640        call: 49.22680  jmp: 39.10530  jmp_pushing: 48.79410
invoke: 48.96040        call: 48.65530  jmp: 38.93640  jmp_pushing: 48.89900
invoke: 49.18770        call: 49.16870  jmp: 40.31570  jmp_pushing: 49.47520
==== TEST #2 CALLER ==============================================================
invoke: 88.14260        call: 88.40850  jmp: 77.93630  jmp_pushing: 87.63130
invoke: 88.23860        call: 87.75230  jmp: 79.09840  jmp_pushing: 88.29500
invoke: 89.12850        call: 88.88320  jmp: 78.66140  jmp_pushing: 88.91490
invoke: 89.20640        call: 88.00590  jmp: 78.43220  jmp_pushing: 87.98450
invoke: 88.84460        call: 87.63700  jmp: 78.01040  jmp_pushing: 87.42030
invoke: 89.14900        call: 88.49750  jmp: 79.75330  jmp_pushing: 91.29620
invoke: 88.59650        call: 87.67670  jmp: 77.98670  jmp_pushing: 87.53560
invoke: 88.27750        call: 87.89240  jmp: 78.03880  jmp_pushing: 87.50800
invoke: 88.72370        call: 88.03770  jmp: 79.74930  jmp_pushing: 87.95070
invoke: 88.95910        call: 87.57560  jmp: 77.82160  jmp_pushing: 87.86520
Press any key to continue ...
#3
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by daydreamer - June 24, 2025, 11:14:15 PM
Quote from: NoCforMe on June 24, 2025, 09:00:25 PMSo it's better not to align a proc???
I thought it should be like that with Align vs unaligned  proc start,because innerloop some opcodes later ends up aligned
#4
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by FORTRANS - June 24, 2025, 11:07:52 PM
Hi,

   These are screen captures as file redirection failed
at least once, if not more.

F:\TEMP\TEST>alignedInvoke.exe
pre-P4 (SSE1)

610     cycles for 100 * proc aligned 16
624     cycles for 100 * proc aligned 16+3

608     cycles for 100 * proc aligned 16
624     cycles for 100 * proc aligned 16+3

608     cycles for 100 * proc aligned 16
624     cycles for 100 * proc aligned 16+3

608     cycles for 100 * proc aligned 16
624     cycles for 100 * proc aligned 16+3

608     cycles for 100 * proc aligned 16
624     cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2       = eax proc aligned 16
2       = eax proc aligned 16+3

--- ok ---

F:\TEMP\TEST>main
==== TEST #1 CALLER ==============================================================
invoke: 302.09482       call: 264.08636         jmp: 264.25621          jmp_pushing: 339.67110
invoke: 303.36202       call: 264.12184         jmp: 264.15704          jmp_pushing: 339.77559
invoke: 301.81266       call: 264.36097         jmp: 264.24951          jmp_pushing: 340.95283
invoke: 302.00961       call: 264.15257         jmp: 264.27018          jmp_pushing: 339.55321
invoke: 301.91184       call: 264.32605         jmp: 265.50358          jmp_pushing: 339.59176
invoke: 302.31356       call: 264.10982         jmp: 264.10619          jmp_pushing: 339.75016
invoke: 302.03923       call: 265.50078         jmp: 264.09586          jmp_pushing: 339.82671
invoke: 301.98112       call: 264.14838         jmp: 264.10647          jmp_pushing: 339.77140
invoke: 303.23463       call: 264.08217         jmp: 264.33695          jmp_pushing: 339.59204
invoke: 302.15181       call: 264.11485         jmp: 264.40511          jmp_pushing: 340.88467
==== TEST #2 CALLER ==============================================================
invoke: 453.00618       call: 490.50731         jmp: 415.16757          jmp_pushing: 452.98131
invoke: 454.16526       call: 490.63861         jmp: 415.12175          jmp_pushing: 452.90589
invoke: 452.91790       call: 492.03348         jmp: 415.05499          jmp_pushing: 452.74050
invoke: 452.91008       call: 491.96336         jmp: 415.13935          jmp_pushing: 452.84024
invoke: 452.99109       call: 490.53469         jmp: 416.67055          jmp_pushing: 452.83521
invoke: 452.98159       call: 490.48664         jmp: 416.65770          jmp_pushing: 455.40620
invoke: 455.01928       call: 496.79079         jmp: 423.67619          jmp_pushing: 459.67826
invoke: 454.31053       call: 492.30168         jmp: 416.03528          jmp_pushing: 453.15368
invoke: 454.45888       call: 491.03140         jmp: 415.20109          jmp_pushing: 467.58792
invoke: 463.72542       call: 499.95125         jmp: 418.50459          jmp_pushing: 453.11848
Press any key to continue ...


F:\TEMP\TEST>alignedInvoke
Intel(R) Pentium(R) M processor 1.70GHz (SSE2)

601     cycles for 100 * proc aligned 16
495     cycles for 100 * proc aligned 16+3

601     cycles for 100 * proc aligned 16
496     cycles for 100 * proc aligned 16+3

605     cycles for 100 * proc aligned 16
493     cycles for 100 * proc aligned 16+3

601     cycles for 100 * proc aligned 16
495     cycles for 100 * proc aligned 16+3

601     cycles for 100 * proc aligned 16
493     cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2       = eax proc aligned 16
2       = eax proc aligned 16+3

--- ok ---

F:\TEMP\TEST>MAIN
==== TEST #1 CALLER ==============================================================
invoke: 411.29026       call: 366.47311         jmp: 307.82739          jmp_pushing: 412.96254
invoke: 418.24338       call: 363.92921         jmp: 307.69330          jmp_pushing: 416.64821
invoke: 409.97361       call: 362.46367         jmp: 307.54076          jmp_pushing: 411.52772
invoke: 408.70921       call: 356.41541         jmp: 310.26206          jmp_pushing: 407.28892
invoke: 409.87165       call: 360.36144         jmp: 313.87565          jmp_pushing: 414.53537
invoke: 420.11122       call: 371.79111         jmp: 312.48273          jmp_pushing: 417.93859
invoke: 411.90235       call: 358.84561         jmp: 309.41027          jmp_pushing: 412.72117
invoke: 408.88632       call: 356.51933         jmp: 310.92080          jmp_pushing: 407.48922
invoke: 410.12643       call: 361.72949         jmp: 307.28039          jmp_pushing: 411.15002
invoke: 411.97582       call: 363.28332         jmp: 309.21891          jmp_pushing: 415.44247
==== TEST #2 CALLER ==============================================================
invoke: 621.47563       call: 671.48506         jmp: 564.91761          jmp_pushing: 618.72808
invoke: 614.43005       call: 667.05349         jmp: 560.85508          jmp_pushing: 614.80440
invoke: 614.35797       call: 675.82640         jmp: 569.75733          jmp_pushing: 625.46664
invoke: 620.94372       call: 669.79267         jmp: 560.78943          jmp_pushing: 617.83355
invoke: 614.07246       call: 666.91884         jmp: 568.93236          jmp_pushing: 612.86113
invoke: 618.08275       call: 672.85758         jmp: 573.48378          jmp_pushing: 619.38989
invoke: 617.97072       call: 668.97050         jmp: 566.58346          jmp_pushing: 611.59756
invoke: 616.79990       call: 665.14543         jmp: 566.33650          jmp_pushing: 619.49382
invoke: 625.09621       call: 679.02569         jmp: 567.79954          jmp_pushing: 619.13679
invoke: 621.26835       call: 672.98358         jmp: 573.74219          jmp_pushing: 622.63221
Press any key to continue ...

F:\TEMP\TEST>alignedInvoke.exe
Intel(R) Core(TM) i3-4005U CPU @ 1.70GHz (SSE4)

455     cycles for 100 * proc aligned 16
332     cycles for 100 * proc aligned 16+3

454     cycles for 100 * proc aligned 16
324     cycles for 100 * proc aligned 16+3

453     cycles for 100 * proc aligned 16
298     cycles for 100 * proc aligned 16+3

453     cycles for 100 * proc aligned 16
330     cycles for 100 * proc aligned 16+3

458     cycles for 100 * proc aligned 16
279     cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2       = eax proc aligned 16
2       = eax proc aligned 16+3

--- ok ---

F:\TEMP\TEST>main
==== TEST #1 CALLER ==============================================================
invoke: 79.55096        call: 89.95171  jmp: 70.87813   jmp_pushing: 80.25976
invoke: 86.33164        call: 88.83478  jmp: 70.83405   jmp_pushing: 87.27047
invoke: 79.81721        call: 88.48521  jmp: 70.77549   jmp_pushing: 88.71645
invoke: 70.91012        call: 89.01711  jmp: 70.84190   jmp_pushing: 86.12395
invoke: 83.61297        call: 88.84806  jmp: 70.78817   jmp_pushing: 83.28755
invoke: 76.64874        call: 88.49306  jmp: 70.77428   jmp_pushing: 87.37250
invoke: 70.90892        call: 88.49245  jmp: 72.15626   jmp_pushing: 87.21191
invoke: 72.25105        call: 88.53411  jmp: 71.02001   jmp_pushing: 83.81462
invoke: 77.93291        call: 88.48762  jmp: 70.78394   jmp_pushing: 82.08187
invoke: 71.26332        call: 88.48762  jmp: 71.11298   jmp_pushing: 82.98688
==== TEST #2 CALLER ==============================================================
invoke: 159.97252       call: 159.60725         jmp: 116.62950          jmp_pushing: 141.56245
invoke: 159.33073       call: 159.32953         jmp: 145.87200          jmp_pushing: 142.43245
invoke: 159.59759       call: 159.29149         jmp: 113.44050          jmp_pushing: 141.56909
invoke: 159.71351       call: 159.72860         jmp: 142.29480          jmp_pushing: 141.36925
invoke: 159.34704       call: 159.28666         jmp: 127.40095          jmp_pushing: 136.38471
invoke: 159.32832       call: 159.92361         jmp: 133.27904          jmp_pushing: 134.22511
invoke: 159.37783       call: 159.26130         jmp: 139.66246          jmp_pushing: 133.86165
invoke: 159.36213       call: 159.68634         jmp: 141.54917          jmp_pushing: 134.24081
invoke: 159.35549       call: 160.93429         jmp: 131.90672          jmp_pushing: 130.19268
invoke: 160.10353       call: 159.26855         jmp: 132.17418          jmp_pushing: 141.55460
Press any key to continue ...


HTH,

Steve
#5
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by TimoVJL - June 24, 2025, 09:01:24 PM
Vintage PC
AMD Athlon(tm) II X2 220 Processor (SSE3)

494     cycles for 100 * proc aligned 16
392     cycles for 100 * proc aligned 16+3

494     cycles for 100 * proc aligned 16
394     cycles for 100 * proc aligned 16+3

494     cycles for 100 * proc aligned 16
392     cycles for 100 * proc aligned 16+3

494     cycles for 100 * proc aligned 16
393     cycles for 100 * proc aligned 16+3

493     cycles for 100 * proc aligned 16
393     cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2       = eax proc aligned 16
2       = eax proc aligned 16+3

--- ok ---
#6
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by NoCforMe - June 24, 2025, 09:00:25 PM
So it's better not to align a proc???
#7
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by zedd - June 24, 2025, 08:55:46 PM
Quote from: jj2007 on June 24, 2025, 07:56:40 PMMight be different on an Intel, though. Exe attached.
:biggrin:
==== TEST #1 CALLER ==============================================================
invoke: 39.03400        call: 37.10070  jmp: 29.29720  jmp_pushing: 37.63750
invoke: 36.59330        call: 36.42400  jmp: 29.06740  jmp_pushing: 36.25850
invoke: 36.49720        call: 36.12820  jmp: 28.76850  jmp_pushing: 36.21280
invoke: 36.30200        call: 36.06980  jmp: 28.80440  jmp_pushing: 36.03530
invoke: 36.19410        call: 36.03210  jmp: 28.80230  jmp_pushing: 35.98700
invoke: 36.39530        call: 36.04040  jmp: 28.82840  jmp_pushing: 35.99410
invoke: 36.33010        call: 36.09230  jmp: 28.82980  jmp_pushing: 35.96370
invoke: 36.26420        call: 36.16860  jmp: 28.73160  jmp_pushing: 36.29470
invoke: 36.38940        call: 36.33560  jmp: 29.03850  jmp_pushing: 36.83340
invoke: 37.37830        call: 36.75130  jmp: 29.04050  jmp_pushing: 36.26370
==== TEST #2 CALLER ==============================================================
invoke: 65.15510        call: 64.81390  jmp: 57.61800  jmp_pushing: 64.72920
invoke: 65.33520        call: 64.86460  jmp: 57.55920  jmp_pushing: 64.76620
invoke: 65.04840        call: 64.66490  jmp: 57.49290  jmp_pushing: 64.65700
invoke: 65.22070        call: 64.89620  jmp: 57.78490  jmp_pushing: 64.81490
invoke: 66.02900        call: 64.80590  jmp: 57.54240  jmp_pushing: 64.87450
invoke: 65.22210        call: 64.78520  jmp: 57.59590  jmp_pushing: 64.71000
invoke: 65.49250        call: 65.40180  jmp: 57.58870  jmp_pushing: 64.74750
invoke: 65.26520        call: 64.90300  jmp: 57.77930  jmp_pushing: 64.73560
invoke: 65.22540        call: 64.87050  jmp: 57.56690  jmp_pushing: 65.37160
invoke: 65.36270        call: 64.86590  jmp: 57.45520  jmp_pushing: 64.72840
Press any key to continue ...

Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (SSE4)

377    cycles for 100 * proc aligned 16
290    cycles for 100 * proc aligned 16+3

377    cycles for 100 * proc aligned 16
269    cycles for 100 * proc aligned 16+3

373    cycles for 100 * proc aligned 16
294    cycles for 100 * proc aligned 16+3

375    cycles for 100 * proc aligned 16
288    cycles for 100 * proc aligned 16+3

362    cycles for 100 * proc aligned 16
265    cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2      = eax proc aligned 16
2      = eax proc aligned 16+3

--- ok ---
#8
Windows API / Re: How do I get access to my ...
Last post by sinsi - June 24, 2025, 08:50:24 PM
Nice and easy to follow. Good job :thumbsup:
#9
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by sinsi - June 24, 2025, 08:46:42 PM
Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz (SSE4)
Microsoft Windows [Version 10.0.26100.4351]

==== TEST #1 CALLER ==============================================================
invoke: 33.84450        call: 33.37450  jmp: 26.55270   jmp_pushing: 33.06370
invoke: 33.45990        call: 33.31720  jmp: 26.50350   jmp_pushing: 33.07700
invoke: 33.25490        call: 33.28840  jmp: 26.54130   jmp_pushing: 33.15580
invoke: 33.10430        call: 33.11740  jmp: 26.47120   jmp_pushing: 32.96570
invoke: 33.10170        call: 33.15360  jmp: 26.49780   jmp_pushing: 33.04690
invoke: 33.12710        call: 33.10910  jmp: 26.46390   jmp_pushing: 33.08420
invoke: 33.08330        call: 33.10080  jmp: 26.48590   jmp_pushing: 32.87880
invoke: 33.12980        call: 33.17760  jmp: 26.49480   jmp_pushing: 32.99880
invoke: 33.12840        call: 33.12720  jmp: 26.48530   jmp_pushing: 33.06950
invoke: 33.18710        call: 33.09230  jmp: 26.50570   jmp_pushing: 32.88170
==== TEST #2 CALLER ==============================================================
invoke: 59.59570        call: 59.60400  jmp: 47.12650   jmp_pushing: 42.29450
invoke: 59.57080        call: 59.60340  jmp: 45.90970   jmp_pushing: 43.78430
invoke: 59.60710        call: 59.63960  jmp: 43.21370   jmp_pushing: 41.32330
invoke: 59.64870        call: 59.58620  jmp: 44.30890   jmp_pushing: 43.92940
invoke: 59.61300        call: 59.61520  jmp: 46.55210   jmp_pushing: 42.90500
invoke: 59.73040        call: 59.57440  jmp: 47.17210   jmp_pushing: 43.60190
invoke: 59.57470        call: 59.62530  jmp: 46.62040   jmp_pushing: 41.76730
invoke: 59.59960        call: 59.58450  jmp: 46.19870   jmp_pushing: 43.31890
invoke: 59.60240        call: 59.57950  jmp: 46.96230   jmp_pushing: 40.04710
invoke: 59.60350        call: 59.60040  jmp: 47.15910   jmp_pushing: 43.01760

231     cycles for 100 * proc aligned 16
194     cycles for 100 * proc aligned 16+3

227     cycles for 100 * proc aligned 16
181     cycles for 100 * proc aligned 16+3

224     cycles for 100 * proc aligned 16
195     cycles for 100 * proc aligned 16+3

229     cycles for 100 * proc aligned 16
184     cycles for 100 * proc aligned 16+3

221     cycles for 100 * proc aligned 16
185     cycles for 100 * proc aligned 16+3

15      bytes for proc aligned 16
19      bytes for proc aligned 16+3

2       = eax proc aligned 16
2       = eax proc aligned 16+3
#10
The Laboratory / Re: Invoke, call, jump. Simple...
Last post by jj2007 - June 24, 2025, 07:56:40 PM
Might be different on an Intel, though. Exe attached.