|
|
| version 1.20, 2004/02/18 18:29:29 | version 1.21, 2004/02/18 20:11:36 |
|---|---|
| Line 448 I286 pop_es(void) { // 07: pop es | Line 448 I286 pop_es(void) { // 07: pop es |
| I286CLOCK(5) | I286CLOCK(5) |
| REGPOP(I286_ES) | REGPOP(I286_ES) |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short pop_es_pe | jne short pop_es_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| pop_es_base: mov ES_BASE, eax | pop_es_base: mov ES_BASE, eax |
| Line 661 I286 pop_ss(void) { // 17: pop ss | Line 661 I286 pop_ss(void) { // 17: pop ss |
| I286CLOCK(5) | I286CLOCK(5) |
| REGPOP(I286_SS) | REGPOP(I286_SS) |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short pop_ss_pe | jne short pop_ss_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| pop_ss_base: mov SS_BASE, eax | pop_ss_base: mov SS_BASE, eax |
| Line 790 I286 pop_ds(void) { // 1F: pop ds | Line 790 I286 pop_ds(void) { // 1F: pop ds |
| I286CLOCK(5) | I286CLOCK(5) |
| REGPOP(I286_DS) | REGPOP(I286_DS) |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short pop_ds_pe | jne short pop_ds_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| pop_ds_base: mov DS_BASE, eax | pop_ds_base: mov DS_BASE, eax |
| Line 2498 I286 mov_seg_ea(void) { // 8E: mov | Line 2498 I286 mov_seg_ea(void) { // 8E: mov |
| segset: | segset: |
| mov word ptr I286_SEGREG[ebp], ax | mov word ptr I286_SEGREG[ebp], ax |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short mov_seg_pe | jne short mov_seg_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| mov_seg_base: mov SEG_BASE[ebp*2], eax | mov_seg_base: mov SEG_BASE[ebp*2], eax |
| Line 2714 I286 call_far(void) { // 9A: call | Line 2714 I286 call_far(void) { // 9A: call |
| mov si, bx | mov si, bx |
| shr ebx, 16 | shr ebx, 16 |
| mov I286_CS, bx | mov I286_CS, bx |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short call_far_pe | jne short call_far_pe |
| shl ebx, 4 | shl ebx, 4 |
| mov CS_BASE, ebx | mov CS_BASE, ebx |
| Line 3370 I286 les_r16_ea(void) { // C4: les | Line 3370 I286 les_r16_ea(void) { // C4: les |
| lea ecx, [edi + ebp] | lea ecx, [edi + ebp] |
| call i286_memoryread_w | call i286_memoryread_w |
| mov I286_ES, ax | mov I286_ES, ax |
| and eax, 0000ffffh | movzx eax, ax |
| test byte ptr (I286_MSW), MSW_PE | |
| jne short les_pe | |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| mov ES_BASE, eax | les_base: mov ES_BASE, eax |
| ret | ret |
| align 4 | |
| src_register: | les_pe: push offset les_base |
| INT_NUM(6) | jmp i286x_selector |
| src_register: INT_NUM(6) | |
| } | } |
| } | } |
| Line 3399 I286 lds_r16_ea(void) { // C5: lds | Line 3403 I286 lds_r16_ea(void) { // C5: lds |
| lea ecx, [edi + ebp] | lea ecx, [edi + ebp] |
| call i286_memoryread_w | call i286_memoryread_w |
| mov I286_DS, ax | mov I286_DS, ax |
| and eax, 0000ffffh | movzx eax, ax |
| test byte ptr (I286_MSW), MSW_PE | |
| jne short lds_pe | |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| mov DS_BASE, eax | lds_base: mov DS_BASE, eax |
| mov DS_FIX, eax | mov DS_FIX, eax |
| ret | ret |
| align 16 | |
| src_register: | lds_pe: push offset lds_base |
| INT_NUM(6) | jmp i286x_selector |
| src_register: INT_NUM(6) | |
| } | } |
| } | } |
| Line 3559 I286 ret_far_data16(void) { // CA: | Line 3568 I286 ret_far_data16(void) { // CA: |
| call i286_memoryread_w | call i286_memoryread_w |
| mov I286_CS, ax | mov I286_CS, ax |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short ret_far16_pe | jne short ret_far16_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| ret_far16_base: mov CS_BASE, eax | ret_far16_base: mov CS_BASE, eax |
| Line 3587 I286 ret_far(void) { // CB: ret fa | Line 3596 I286 ret_far(void) { // CB: ret fa |
| call i286_memoryread_w | call i286_memoryread_w |
| mov I286_CS, ax | mov I286_CS, ax |
| movzx eax, ax | movzx eax, ax |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short ret_far_pe | jne short ret_far_pe |
| shl eax, 4 // make segreg | shl eax, 4 // make segreg |
| ret_far_base: mov CS_BASE, eax | ret_far_base: mov CS_BASE, eax |
| Line 4096 I286 jmp_far(void) { // EA: jmp fa | Line 4105 I286 jmp_far(void) { // EA: jmp fa |
| mov si, bx | mov si, bx |
| shr ebx, 16 | shr ebx, 16 |
| mov I286_CS, bx | mov I286_CS, bx |
| test I286_MSW, MSW_PE | test byte ptr (I286_MSW), MSW_PE |
| jne short jmp_far_pe | jne short jmp_far_pe |
| shl ebx, 4 // make segreg | shl ebx, 4 // make segreg |
| mov CS_BASE, ebx | mov CS_BASE, ebx |