OSDN Git Service

svn rev.329より移動。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / emu86asm.nas
1 [FORMAT "WCOFF"]\r
2 [INSTRSET "i486p"]\r
3 [BITS 32]\r
4 [FILE "nasfunc0.nas"]\r
5 \r
6         GLOBAL  _asm_Emulator_x86_Get_EFlags_Compare\r
7         GLOBAL  _asm_Emulator_x86_Get_EFlags_Increment\r
8         GLOBAL  _asm_Emulator_x86_Get_EFlags_XOR\r
9         GLOBAL  _asm_Emulator_x86_Get_EFlags_Decrement\r
10         GLOBAL  _asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow\r
11 \r
12 [SECTION .text]\r
13 \r
14 _asm_Emulator_x86_Get_EFlags_Compare:\r
15         mov     eax, [esp + 4]\r
16         cmp     eax, [esp + 8]\r
17         pushfd\r
18         pop     eax\r
19         ret\r
20 \r
21 _asm_Emulator_x86_Get_EFlags_Increment:\r
22         mov     eax, [esp + 4]\r
23         inc     eax\r
24         pushfd\r
25         pop     eax\r
26         ret\r
27 \r
28 _asm_Emulator_x86_Get_EFlags_XOR:\r
29         mov     eax, [esp + 8]\r
30         xor     [esp + 4], eax\r
31         pushfd\r
32         pop     eax\r
33         ret\r
34 \r
35 _asm_Emulator_x86_Get_EFlags_Decrement:\r
36         mov     eax, [esp + 4]\r
37         dec     eax\r
38         pushfd\r
39         pop     eax\r
40         ret\r
41 \r
42 _asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow:\r
43         mov     edx, [esp + 4]\r
44         xor     eax, eax\r
45         mov     ax, [edx]\r
46         cmp     dword[esp + 12], 1\r
47         jne     asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow_CF0\r
48 asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow_CF1:\r
49         stc\r
50         jmp     asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow_DO\r
51 asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow_CF0:\r
52         clc\r
53 asm_Emulator_x86_Get_EFlags_Subtract_with_Borrow_DO:\r
54         sbb     ax, [esp + 8]\r
55         mov     [edx], eax\r
56         pushfd\r
57         pop     eax\r
58         ret\r
59 \r
60 \r