Ahoj, potřeboval bych poradit jak ve Visual studiu v ASM vytvořit skokovou tabulku pro rozsáhlé case sekvenčně po hodnoty 0-100+, vím že tím zdrojový soubor celkem naroste, ale ve výsledku by to mělo být efektivnější a hlavně rychlejší než case. Jedná se o kontrolu multiplayeru zda zadaný typ munice odpovídá druhu zbraně.
__asm
{
PUSH EAX
PUSH ECX
MOV result, 1
MOV EAX, DruhID
CMP EAX, 120
JA W_END
MOV ECX, TypID
JMP[JTable + EAX * 4]
JTable:
dw W_END, W1, W_END, W3, W4, W5, W6, W7, W8, W9, W10, W11, W12, W_END, W_END, W15, W16, W17, W18, W19 //....
//W0:
W1:
CMP ECX, 32
JE W_FALSE
JMP W_END
//W2:
W3:
CMP ECX, 23
JE W_FALSE
CMP ECX, 84
JE W_FALSE
JMP W_END
W4:
CMP ECX, 64
JE W_FALSE
JMP W_END
...
W_FALSE:
MOV return, 0
W_END:
Vahazuje mi to rerror C2400: inline assembler syntax error in 'opcode'; found 'W_END' na tom řádku pod JTABLE:
Nemůžu přijít na chybu jediný co mě napadá je bud chybné umístění nebo jestli to není třeba zadávat na samostatné řádky nebo s nějakým extra znakem. at jsem hledal co jsme hledal jendiný co jsem našel bylo něco jako
.long W_END s každým labelem na samostatné řádce.
nebo třeba ještě nějaká direktiva, umístění na začátku/konci celého kodu, nebo označení oblasti jako
.data