|
|
| version 1.1, 2004/02/18 02:03:36 | version 1.6, 2007/01/08 08:52:21 |
|---|---|
| Line 68 static char *set_hex(char *str, UINT32 v | Line 68 static char *set_hex(char *str, UINT32 v |
| // ---- | // ---- |
| UINT unasm(UNASM r, const BYTE *ptr, UINT leng, BOOL d, UINT32 addr) { | UINT unasm(UNASM r, const UINT8 *ptr, UINT leng, BOOL d, UINT32 addr) { |
| const BYTE *org; | const UINT8 *org; |
| const BYTE *term; | const UINT8 *term; |
| UINT flag; | UINT flag; |
| REG8 ope; | REG8 ope; |
| UINT32 ctl; | UINT32 ctl; |
| Line 360 opeana_ea: | Line 360 opeana_ea: |
| if (ptr > term) { | if (ptr > term) { |
| return(0); | return(0); |
| } | } |
| p = set_hex(p, LOADINTELWORD(ptr - 4), 16); | p = set_hex(p, LOADINTELDWORD(ptr - 4), 32); |
| } | } |
| *p++ = ']'; | *p++ = ']'; |
| break; | break; |
| Line 392 opeana_ea: | Line 392 opeana_ea: |
| f = (flag >> UAFLAG_REP) & UAFLAG_REPMASK; | f = (flag >> UAFLAG_REP) & UAFLAG_REPMASK; |
| if (f) { | if (f) { |
| p = set_str(p, rstr.ope[mnemonic]); | p = set_str(p, rstr.ope[mnemonic]); |
| mnemonic = RSTR_REP; | mnemonic = RSTR_REP + (f - 1); |
| } | } |
| f = (flag >> UAFLAG_SOR) & UAFLAG_SOMASK; | f = (flag >> UAFLAG_SOR) & UAFLAG_SOMASK; |
| if (f) { | if (f) { |
| p[0] = rstr.reg[RSTR_SEG][f - 1][0]; | p[0] = ' '; |
| p[1] = rstr.reg[RSTR_SEG][f - 1][0]; | |
| p[1] = rstr.reg[RSTR_SEG][f - 1][1]; | p[1] = rstr.reg[RSTR_SEG][f - 1][1]; |
| p[2] = ':'; | p[3] = ':'; |
| p += 3; | p += 4; |
| } | } |
| break; | break; |
| Line 411 opeana_ea: | Line 412 opeana_ea: |
| return(0); | return(0); |
| } | } |
| addr += (SINT32)(SINT8)(*ptr++); | addr += (SINT32)(SINT8)(*ptr++); |
| addr += (ptr - org); | addr += (int)(ptr - org); |
| p = set_hex(p, addr, (flag & (1 << UAFLAG_D))?32:16); | p = set_hex(p, addr, (flag & (1 << UAFLAG_D))?32:16); |
| break; | break; |
| Line 422 opeana_ea: | Line 423 opeana_ea: |
| return(0); | return(0); |
| } | } |
| addr += LOADINTELWORD(ptr - 2); | addr += LOADINTELWORD(ptr - 2); |
| addr += (ptr - org); | addr += (int)(ptr - org); |
| p = set_hex(p, addr, 16); | p = set_hex(p, addr, 16); |
| } | } |
| else { | else { |
| Line 430 opeana_ea: | Line 431 opeana_ea: |
| if (ptr > term) { | if (ptr > term) { |
| return(0); | return(0); |
| } | } |
| addr += LOADINTELWORD(ptr - 4); | addr += LOADINTELDWORD(ptr - 4); |
| addr += (ptr - org); | addr += (int)(ptr - org); |
| p = set_hex(p, addr, 32); | p = set_hex(p, addr, 32); |
| } | } |
| break; | break; |
| case OP1_FAR: | case OP1_FAR: |
| ptr += 4; | if (!(flag & (1 << UAFLAG_D))) { |
| if (ptr > term) { | ptr += 4; |
| return(0); | if (ptr > term) { |
| return(0); | |
| } | |
| p = set_hex(p, LOADINTELWORD(ptr - 2), 16); | |
| *p++ = ':'; | |
| p = set_hex(p, LOADINTELWORD(ptr - 4), 16); | |
| } | |
| else { | |
| ptr += 6; | |
| if (ptr > term) { | |
| return(0); | |
| } | |
| p = set_hex(p, LOADINTELWORD(ptr - 2), 16); | |
| *p++ = ':'; | |
| p = set_hex(p, LOADINTELDWORD(ptr - 6), 32); | |
| } | } |
| p = set_hex(p, LOADINTELWORD(ptr - 2), 16); | |
| *p++ = ':'; | |
| p = set_hex(p, LOADINTELWORD(ptr - 4), 16); | |
| break; | break; |
| case OP1_I10: | case OP1_I10: |
| Line 475 opeana_ea: | Line 487 opeana_ea: |
| goto opeana_ea; | goto opeana_ea; |
| case OP1_REx: | case OP1_REx: |
| p = set_reg(p, RSTR_32 + (ope & 7)); | p = set_reg(p, (RSTR_32 << 3) + (ope & 7)); |
| p[0] = ','; | p[0] = ','; |
| p[1] = ' '; | p[1] = ' '; |
| p[2] = (char)mnemonic; | p[2] = (char)mnemonic; |
| Line 492 opeana_ea: | Line 504 opeana_ea: |
| p[3] = ','; | p[3] = ','; |
| p[4] = ' '; | p[4] = ' '; |
| p += 5; | p += 5; |
| p = set_reg(p, RSTR_32 + (ope & 7)); | p = set_reg(p, (RSTR_32 << 3) + (ope & 7)); |
| mnemonic = RSTR_MOV; | mnemonic = RSTR_MOV; |
| break; | break; |
| Line 572 opeana_ea: | Line 584 opeana_ea: |
| opeana_ed: | opeana_ed: |
| r->mnemonic = rstr.ope[mnemonic]; | r->mnemonic = rstr.ope[mnemonic]; |
| p[0] = '\0'; | p[0] = '\0'; |
| return(ptr - org); | return((UINT)(ptr - org)); |
| } | } |