News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

InstrCi - case-insensitive string search

Started by jj2007, June 15, 2008, 10:09:46 PM

Previous topic - Next topic

jj2007

#75
Made a few changes to Jim's package:
- ShowCPU
- Overall cycles (helps to quickly identify problems with timing consistency etc)
- increased TimesToLoop to 10000
- added an "easy" mismatch case ("xillabong"; note the old mmword has become a reserved word)

Intel(R) Pentium(R) 4 CPU 3.40GHz (SSE3)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          459       17       17       17       17       17      544
InStrL       162      162      502      527     1326      366     3045
finstr       119      272      391      527     1411      722     3442
finstr2      119      280      442      552     1708      765     3866
finstr3      119      280      467      552     1717      773     3908
finstr4      111      306      535      671     1352      927     3902
finstr5      110      340      637      689     1411     1045     4232
finstr6      111      272      459      544     1708      765     3859
InstrJJ      204      187      476      280     2644      297     4088


EDIT: Timings on the Celeron are a lot more stable:
Intel(R) Celeron(R) M CPU        420  @ 1.60GHz (SSE3)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          264        0        0        0        0        0      264
InStrL        84      132      360      468     1152      300     2496
finstr       108      288      432      552     1500      828     3708
finstr2      144      216      360      372     1608      540     3240
finstr3      144      204      348      348     1512      528     3084
finstr4       84      324      456      636     1500      924     3924
finstr5       84      336      456      612     1488      996     3972
finstr6      144      216      360      372     1608      540     3240
InstrJJ       84      120      204      132     1548      156     2244

[attachment deleted by admin]

dedndave

much better
i get very close results either way i run it
now, can you make my prescott run like fearless's machine ? lol

Intel(R) Pentium(R) 4 CPU 3.00GHz (SSE3)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          487        0        0        0        0        0      487
InStrL       135      203      308      518     1290      360     2814
finstr        90      255      375      473     1403      683     3279
finstr2      113      270      435      495     1695      758     3766
finstr3      105      263      435      495     1695      750     3743
finstr4       98      278      540      601     1335      915     3767
finstr5       98      345      495      660     1403     1028     4029
finstr6       98      270      421      533     1673      758     3753
InstrJJ      188      180      450      248     2640      270     3976

dedndave

i may have misunderstood the use of
SetProcessAffinityUpdateMode to set PROCESS_AFFINITY_ENABLE_AUTO_UPDATE
i need to research this one a little more
as i read it, it needed to be enabled to use SetProcessAffinityMask
after a re-read, it may need to be disabled to dis-allow the system from altering the ProcessAffinity dynamically
i can write a little program to test this - probably easier than reading MS docs

UtillMasm

#78
#c:\china>"\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin\ml.exe" /c /coff instrnew.asm
#Microsoft (R) Macro Assembler Version 8.00.50727.762
#Copyright (C) Microsoft Corporation.  All rights reserved.
#
# Assembling: instrnew.asm
#\masm32\include\windows.inc(16610) : error A2138: invalid data initializer
#
#c:\china>

#
why?

#ImportRec record Reserved:11,NameType:3,Type2:2
#IMPORT_OBJECT_HEADER struct
# Sig1 dw ?
# Sig2 dw ?
# Version dw ?
# Machine dw ?
# TimeDateStamp dd ?
# SizeOfData dd ?
# union
#  Ordinal dw ?
#  Hint dw ?
# ends
# rImport ImportRec <> ;line 16610
#IMPORT_OBJECT_HEADER ends


no why (because GeneSys windows.inc v1.30 comment IMPORT_OBJECT_HEADER struct.), comment line 16610 to continue...

c:\china>"\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin\ml.exe" /c /coff instrnew.asm
Microsoft (R) Macro Assembler Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

  Assembling: instrnew.asm

c:\china>\masm32\bin\link.exe /subsystem:console instrnew.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


c:\china>instrnew.exe
Genuine Intel(R) CPU           T2400  @ 1.83GHz (SSE3)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          264        0        0        0        0        0      264
InStrL        88      132      341      462     1133      297     2453
finstr        88      286      429      550     1496      836     3685
finstr2      143      209      352      363     1617      539     3223
finstr3      121      209      352      352     1507      517     3058
finstr4       88      297      451      594     1496      924     3850
finstr5       77      308      451      605     1496      935     3872
finstr6      143      209      363      363     1606      539     3223
InstrJJ       88      121      209      132     1474      154     2178

Press any key to exit...
c:\china>

fearless

Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz (SSE4)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          229        0        0        0        0        0      229
InStrL        43       94      162      340      833      204     1676
finstr        43      153      230      281      808      434     1949
finstr2      111      145      247      255      952      383     2093
finstr3      102      162      255      247      978      349     2093
finstr4       43      204      289      417      799      663     2415
finstr5       43      187      264      366      800      587     2247
finstr6      102      145      239      255      952      375     2068
InstrJJ       60       68      128       77     1386       85     1804


I ran it a few times and noticed a few minor variations in some of the categories.

Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz (SSE4)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          229        0        0        0        0        0      229
InStrL        43      102      230      332      842      204     1753
finstr        43      153      230      281      808      434     1949
finstr2      102      145      230      247      952      374     2050
finstr3      111      162      255      238      978      357     2101
finstr4       43      204      289      417      799      663     2415
finstr5       43      187      264      366      808      587     2255
finstr6      102      145      247      247      952      366     2059
InstrJJ       60       68      128       77     1386       85     1804

Press any key to exit...
C:\Downloads\InstrTable>instrnew
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz (SSE4)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          229        0        0        0        0        0      229
InStrL        51      102      179      340      842      204     1718
finstr        51      153      230      281      808      434     1957
finstr2      103      145      238      255      952      374     2067
finstr3      111      162      255      247      978      357     2110
finstr4       43      204      289      417      799      663     2415
finstr5       43      188      272      366      799      604     2272
finstr6      102      145      247      255      952      374     2075
InstrJJ       60       68      128       77     1386       85     1804

Press any key to exit...
C:\Downloads\InstrTable>instrnew
Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz (SSE4)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH          229        0        0        0        0        0      229
InStrL        43       94      162      340      842      204     1685
finstr        43      153      238      281      808      434     1957
finstr2      103      145      247      255      952      383     2085
finstr3      111      153      255      230      986      357     2092
finstr4       43      204      289      417      799      663     2415
finstr5       43      187      264      383      799      587     2263
finstr6      102      145      230      255      952      383     2067
InstrJJ       60       68      128       77     1386       85     1804

ƒearless

dedndave

#80
to simplify the security access rights issue.....

because the requirements are different for different operating systems,
rather than using GetSecurityInfo to determine of you have sufficient access rights,
it is easier to just use something like this:
1) GetProcessAffinityMask (save the values)
2) SetProcessAffinityMask (select a single core mask)
3) GetProcessAffinityMask (test to see if you changed it)

using the Get/SetPriorityClass has the same access rights requirements
as Get/SetProcessAffinityMask and may be tested in a similar manner

i guess if you can change PriorityClass level, then you can change ProcessAffinity as well
only need to test one


Mark Jones


AMD Athlon(tm) 64 X2 Dual Core Processor 4000+ (SSE3)
Type       Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source   Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern  Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======= ======== ======== ======== ======== ======== ======== ========
OVH           71        0        0        0        0        0       71
InStrL       100      110      328      425      905      263     2131
finstr        88      235      471      444     1382      663     3283
finstr2       99      201      407      335     1504      468     3014
finstr3       98      188      371      320     1467      457     2901
finstr4       79      214      439      420     1262      609     3023
finstr5       74      215      449      403     1274      593     3008
finstr6       99      202      388      335     1505      460     2989
InstrJJ      136      134      358      161     2006      204     2999

Run2:
======= ======== ======== ======== ======== ======== ======== ========
OVH           71        0        0        0        0        0       71
InStrL        82      110      328      424      905      263     2112
finstr        88      235      471      444     1382      663     3283
finstr2       99      202      392      319     1501      465     2978
finstr3       98      188      386      320     1467      457     2916
finstr4       79      214      439      420     1262      616     3030
finstr5       74      215      449      403     1274      593     3008
finstr6       99      202      388      335     1504      468     2996
InstrJJ      136      134      362      161     2006      206     3005

Run3:
======= ======== ======== ======== ======== ======== ======== ========
OVH           71        0        0        0        0        0       71
InStrL        83      110      328      425      905      263     2114
finstr        88      235      469      444     1380      663     3279
finstr2       99      202      392      327     1507      462     2989
finstr3       98      188      386      320     1466      457     2915
finstr4       79      214      423      420     1261      616     3013
finstr5       74      215      449      403     1274      593     3008
finstr6       99      202      407      334     1507      468     3017
InstrJJ      136      134      349      161     2006      206     2992
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

jj2007

More than 2000 cycles on my ultrafast Celeron was just not acceptable, so I decided to dig out my trusty old word scanner:
Intel(R) Celeron(R) M CPU        420  @ 1.60GHz (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           264        0        0        0        0        0      264
InStrL         96      144      252      468     1152      300     2412
finstr         84      288      444      588     1500      828     3732
finstr2       144      216      360      372     1608      540     3240
finstr3       144      204      348      348     1512      528     3084
finstr4        84      300      456      648     2352      924     4764
finstr5        84      336      492      648     1488     1008     4056
finstr6       144      216      360      372     1608      540     3240
InstrJJ        84      120      204      132     1536      156     2232
InstrJJw       60      120      180      156     1164      240     1920


:bg

[attachment deleted by admin]

dedndave


Intel(R) Pentium(R) 4 CPU 3.00GHz (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           487        0        0        0        0        0      487
InStrL         90      150      480      525     1290      315     2850
finstr         90      270      383      473     1403      698     3317
finstr2       106      248      428      540     1673      758     3753
finstr3        98      263      510      495     1695      750     3811
finstr4        91      270      458      600     1343      915     3677
finstr5        90      323      608      661     1403     1028     4113
finstr6        98      255      428      495     1680      758     3714
InstrJJ       188      180      450      248     2648      278     3992
InstrJJw       90      180      338      293     2730      405     4036

fearless

Intel(R) Core(TM)2 Quad  CPU   Q9550  @ 2.83GHz (SSE4)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           229        0        0        0        0        0      229
InStrL         51       94      162      332      842      204     1685
finstr         43      153      230      281      808      434     1949
finstr2       102      145      247      255      952      374     2075
finstr3       111      145      247      238      978      349     2068
finstr4        51      179      264      374      799      587     2254
finstr5        43      187      272      383      808      595     2288
finstr6       102      145      247      255      952      374     2075
InstrJJ        60       68      128       77     1318       85     1736
InstrJJw       43       77      153      136      910      187     1506
ƒearless

jj2007

#85
Just for the fun of it, I wrote a little proggie that monitors how INSTR gets used in my main baby, simulating a typical user session. Wow what a surprise...!

Avg Mainstr= 55.1 bytes
Avg Pattern= 3.46 bytes
Total calls= 13,237,796


Looks as if we should concentrate more on short strings around 55 bytes long, and ultrashort patterns ::)

EDIT: In the light of these findings, I added a switch called OptiStrings, which forces shorter Mainstrings - see below. I also added the current Masm32 library InString for comparison, as InstrM32 (that was a bit tricky with JimG's code copy scheme :8))

Intel(R) Celeron(R) M CPU        420  @ 1.60GHz (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           264        0        0        0        0        0      264
InStrL         36       36       72      264       12      120      540
InstrM32      192      204      336      408      168      396     1704
finstr         48       84      132      300       24      312      900
finstr2        48       72      120      204       24      216      684
finstr3        48       72      120      204       36      192      672
finstr4        48       96      144      348       24      336      996
finstr5        48       84      132      336       24      324      948
finstr6        48       72      120      204       24      216      684
InstrJJ        48       60       96       96       48       84      432
InstrJJw       36       60       84      108       48      120      456

Sizes:
Mainstr         100
Substr1         4
Substr2         7
Substr3         14
Substr4         9

mismatch        100
mmStr_b         5
mmStr_x         5

[attachment deleted by admin]

UtillMasm

Genuine Intel(R) CPU           T2400  @ 1.83GHz (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           264        0        0        0        0        0      264
InStrL         88      132      253      462     1133      297     2365
finstr         88      286      429      550     1496      825     3674
finstr2       132      209      363      363     1606      539     3212
finstr3       132      209      352      352     1507      528     3080
finstr4        88      297      451      594     1496      924     3850
finstr5        77      308      451      605     1496      935     3872
finstr6       143      209      363      363     1606      539     3223
InstrJJ        88      121      209      132     1518      165     2233
InstrJJw       55      110      198      154     1155      231     1903

Mark Jones

Interesting...

AMD Athlon(tm) 64 X2 Dual Core Processor 4000+ (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH            71        0        0        0        0        0       71
InStrL         30       32       63      235       21      111      492
InstrM32      177      249      354      558      168      520     2026
finstr         42       70      110      238       29      225      714
finstr2        45       64      109      186       33      162      599
finstr3        47       65      106      179       33      159      589
finstr4        42       67      111      228       26      216      690
finstr5        39       66      110      219       24      205      663
finstr6        45       64      109      186       33      166      603
InstrJJ        60       72      133      108       62      126      561
InstrJJw       53       76      122      130       58      148      587
"To deny our impulses... foolish; to revel in them, chaos." MCJ 2003.08

lingo

I'm wondering why the last version of InString-JJ  is so slow
for my  Test 13 --Find 'Duplicate inc' in 'windows.inc' -
clocks: 844498 against clocs: 679641 of previous version

Intel(R) Core(TM)2 Duo CPU     E8500  @ 3.16GHz (SSE4)

Search Test 1 - value expected 37; lenSrchPattern ->22
InString - JJ:                         38 ; clocks: 84
SrchBytes - Lingo:                     37 ; clocks: 49

Search Test 2 - value expected 1007; lenSrchPattern ->17
InString - JJ:                         1008 ; clocks: 13623
SrchBytes - Lingo:                     1007 ; clocks: 11672

Search Test 3 - value expected 1008 ;lenSrchPattern ->16
InString - JJ:                         1009 ; clocks: 292
SrchBytes - Lingo:                     1008 ; clocks: 134

Search Test 4 - value expected 1008 ;lenSrchPattern ->16
InString - JJ:                         1009 ; clocks: 2979
SrchBytes - Lingo:                     1008 ; clocks: 1400

Search Test 5 - value expected 1008 ;lenSrchPattern ->16
InString - JJ:                         1009 ; clocks: 1829
SrchBytes - Lingo:                     1008 ; clocks: 1285

Search Test 6 - value expected 1008 ;lenSrchPattern ->16
InString - JJ:                         1009 ; clocks: 292
SrchBytes - Lingo:                     1008 ; clocks: 129

Search Test 7 - value expected 1009 ;lenSrchPattern ->14
InString - JJ:                         1010 ; clocks: 544
SrchBytes - Lingo:                     1009 ; clocks: 521

Search Test 8 - value expected 1001 ;lenSrchPattern ->1
InString - JJ:                         1002 ; clocks: 260
SrchBytes - Lingo:                     1001 ; clocks: 92

Search Test 9 - value expected 1001 ;lenSrchPattern ->2
InString - JJ:                         1002 ; clocks: 254
SrchBytes - Lingo:                     1001 ; clocks: 95

Search Test 10 - value expected 1001 ;lenSrchPattern ->3
InString - JJ:                         1002 ; clocks: 257
SrchBytes - Lingo:                     1001 ; clocks: 96

Search Test 11 - value expected 1001 ;lenSrchPattern ->4
InString - JJ:                         1002 ; clocks: 257
SrchBytes - Lingo:                     1001 ; clocks: 96

Search Test 12 - value expected 1001 ;lenSrchPattern ->5
InString - JJ:                         1002 ; clocks: 267
SrchBytes - Lingo:                     1001 ; clocks: 98

Search Test 13 --Find 'Duplicate inc' in 'windows.inc' ;lenSrchPattern ->13
InString - JJ:                         1127625 ; clocks: 844498
SrchBytes - Lingo:                     1127624 ; clocks: 510066

Press ENTER to exit...

UtillMasm

Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

c:\Users\Administrator>cd\china

c:\china>\masm32\bin\ml.exe /c /coff instrnew.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

Assembling: instrnew.asm
instrnew.asm(1315) : error A2008: syntax error : pshufd
instrnew.asm(1341) : error A2008: syntax error : xmm2
instrnew.asm(1348) : error A2008: syntax error : movdqa
instrnew.asm(1349) : error A2008: syntax error : movdqa
instrnew.asm(1495) : error A2008: syntax error : pshufd
instrnew.asm(1517) : error A2008: syntax error : xmm1
instrnew.asm(1518) : error A2008: syntax error : xmm4
instrnew.asm(1521) : error A2008: syntax error : movdqa
instrnew.asm(1527) : error A2008: syntax error : movdqa
instrnew.asm(1528) : error A2008: syntax error : xmm4
instrnew.asm(1529) : error A2008: syntax error : xmm2
instrnew.asm(1637) : error A2008: syntax error : pshufd
instrnew.asm(1638) : error A2008: syntax error : movdqu
instrnew.asm(1639) : error A2008: syntax error : movdqa
instrnew.asm(1314) : error A2006: undefined symbol : xmm0
instrnew.asm(1352) : error A2006: undefined symbol : xmm1
instrnew.asm(1353) : error A2006: undefined symbol : xmm1
instrnew.asm(1354) : error A2006: undefined symbol : xmm1
instrnew.asm(1355) : error A2006: undefined symbol : xmm1
instrnew.asm(1492) : error A2006: undefined symbol : xmm3
instrnew.asm(1531) : error A2006: undefined symbol : xmm1
instrnew.asm(1532) : error A2006: undefined symbol : xmm1
instrnew.asm(1533) : error A2006: undefined symbol : xmm4
instrnew.asm(1535) : error A2006: undefined symbol : xmm4
instrnew.asm(1536) : error A2006: undefined symbol : xmm2
instrnew.asm(1537) : error A2006: undefined symbol : xmm2
instrnew.asm(1636) : error A2006: undefined symbol : xmm3
instrnew.asm(1641) : error A2006: undefined symbol : xmm1
instrnew.asm(1642) : error A2006: undefined symbol : xmm2
instrnew.asm(1643) : error A2006: undefined symbol : xmm1
instrnew.asm(1644) : error A2006: undefined symbol : xmm2

c:\china>


replace ml.exe by 615 to continue.

c:\china>\masm32\bin\ml.exe /c /coff instrnew.asm
Microsoft (R) Macro Assembler Version 6.15.8803
        Patched for you by promethee [ECL] in the year 2001 - enjoy
Copyright (C) Microsoft Corp 1981-2000.  All rights reserved.

Assembling: instrnew.asm
instrnew.asm(1314) : error A2006: undefined symbol : xmm0
instrnew.asm(1315) : error A2006: undefined symbol : xmm0
instrnew.asm(1342) : error A2006: undefined symbol : xmm2
instrnew.asm(1349) : error A2006: undefined symbol : xmm2
instrnew.asm(1350) : error A2006: undefined symbol : xmm1
instrnew.asm(1352) : error A2006: undefined symbol : xmm1
instrnew.asm(1353) : error A2006: undefined symbol : xmm1
instrnew.asm(1354) : error A2006: undefined symbol : xmm1
instrnew.asm(1355) : error A2006: undefined symbol : xmm1
instrnew.asm(1492) : error A2006: undefined symbol : xmm3
instrnew.asm(1495) : error A2006: undefined symbol : xmm3
instrnew.asm(1518) : error A2006: undefined symbol : xmm1
instrnew.asm(1519) : error A2006: undefined symbol : xmm4
instrnew.asm(1522) : error A2006: undefined symbol : xmm2
instrnew.asm(1528) : error A2006: undefined symbol : xmm1
instrnew.asm(1529) : error A2006: undefined symbol : xmm4
instrnew.asm(1530) : error A2006: undefined symbol : xmm2
instrnew.asm(1531) : error A2006: undefined symbol : xmm1
instrnew.asm(1532) : error A2006: undefined symbol : xmm1
instrnew.asm(1533) : error A2006: undefined symbol : xmm4
instrnew.asm(1535) : error A2006: undefined symbol : xmm4
instrnew.asm(1536) : error A2006: undefined symbol : xmm2
instrnew.asm(1537) : error A2006: undefined symbol : xmm2
instrnew.asm(1636) : error A2006: undefined symbol : xmm3
instrnew.asm(1637) : error A2006: undefined symbol : xmm3
instrnew.asm(1638) : error A2006: undefined symbol : xmm1
instrnew.asm(1639) : error A2006: undefined symbol : xmm2
instrnew.asm(1641) : error A2006: undefined symbol : xmm1
instrnew.asm(1642) : error A2006: undefined symbol : xmm2
instrnew.asm(1643) : error A2006: undefined symbol : xmm1
instrnew.asm(1644) : error A2006: undefined symbol : xmm2


oh my fo!

jump to another way.

c:\china>"\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin\ml.exe" /c /coff instrnew.asm
Microsoft (R) Macro Assembler Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

Assembling: instrnew.asm
\masm32\include\windows.inc(16569) : error A2191: cannot include structure in se
lf
\masm32\include\windows.inc(16610) : error A2138: invalid data initializer


oh my masm32!

comment 'FPO_DATA struct' (16569) and 'IMPORT_OBJECT_HEADER struct' (16610) to continue.

c:\china>"\Program Files\Microsoft SDKs\Windows\v6.0\VC\Bin\ml.exe" /c /coff instrnew.asm
Microsoft (R) Macro Assembler Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

Assembling: instrnew.asm

c:\china>\masm32\bin\link.exe /subsystem:console instrnew.obj
Microsoft (R) Incremental Linker Version 5.12.8078
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.


c:\china>instrnew.exe
Genuine Intel(R) CPU           T2400  @ 1.83GHz (SSE3)
Type        Short   Medium     Long HighAnsi MisMatch MisMatch  Overall
Source    Mainstr  Mainstr  Mainstr  Mainstr mismatch mismatch  sum of
Pattern   Substr1  Substr2  Substr3  Substr4  mmStr_b  mmStr_x  cycles
======== ======== ======== ======== ======== ======== ======== ========
OVH           264        0        0        0        0        0      264
InStrL         33       33       77      253       22      121      539
InstrM32      198      231      330      418      176      407     1760
finstr         44       77      132      297       22      297      869
finstr2        44       66      121      209       33      198      671
finstr3        55       66      110      198       33      198      660
finstr4        44       77      132      319       22      319      913
finstr5        44       77      132      330       22      330      935
finstr6        55       66      110      209       33      198      671
InstrJJ        55       66       99       99       55       88      462
InstrJJw       44       55       88      110       44      121      462

Press any key to exit...
c:\china>