Newer
Older
Import / research / XPlat / import / hello-elf.asm
; Disassembly of file: hello-elf.o
; Tue Jan 13 02:40:02 2009
; Mode: 32 bits
; Syntax: MASM/ML
; Instruction set: 80386

.386
option dotname
.model flat

public _ZN4JohnC2Eii
public _ZN4JohnC1Eii
public _ZN4JohnD2Ev
public _ZN4JohnD1Ev
public _ZN4John10helloClassEii
public _ZN4John4dumpEv
public _Z5helloii
public _Z4blahv

extern printf: near
extern _Znwj: near
extern _ZdlPv: near


_text   SEGMENT BYTE PUBLIC 'CODE'                      ; section number 1

_ZN4JohnC2Eii PROC NEAR
        push    ebp                                     ; 0000 _ 55
        mov     ebp, esp                                ; 0001 _ 89. E5
        mov     edx, dword ptr [ebp+8H]                 ; 0003 _ 8B. 55, 08
        mov     eax, dword ptr [ebp+0CH]                ; 0006 _ 8B. 45, 0C
        mov     dword ptr [edx], eax                    ; 0009 _ 89. 02
        mov     edx, dword ptr [ebp+8H]                 ; 000B _ 8B. 55, 08
        mov     eax, dword ptr [ebp+10H]                ; 000E _ 8B. 45, 10
        mov     dword ptr [edx+4H], eax                 ; 0011 _ 89. 42, 04
        pop     ebp                                     ; 0014 _ 5D
        ret                                             ; 0015 _ C3
_ZN4JohnC2Eii ENDP

_ZN4JohnC1Eii PROC NEAR
        push    ebp                                     ; 0016 _ 55
        mov     ebp, esp                                ; 0017 _ 89. E5
        mov     edx, dword ptr [ebp+8H]                 ; 0019 _ 8B. 55, 08
        mov     eax, dword ptr [ebp+0CH]                ; 001C _ 8B. 45, 0C
        mov     dword ptr [edx], eax                    ; 001F _ 89. 02
        mov     edx, dword ptr [ebp+8H]                 ; 0021 _ 8B. 55, 08
        mov     eax, dword ptr [ebp+10H]                ; 0024 _ 8B. 45, 10
        mov     dword ptr [edx+4H], eax                 ; 0027 _ 89. 42, 04
        pop     ebp                                     ; 002A _ 5D
        ret                                             ; 002B _ C3
_ZN4JohnC1Eii ENDP

_ZN4JohnD2Ev PROC NEAR
        push    ebp                                     ; 002C _ 55
        mov     ebp, esp                                ; 002D _ 89. E5
        pop     ebp                                     ; 002F _ 5D
        ret                                             ; 0030 _ C3
_ZN4JohnD2Ev ENDP

        nop                                             ; 0031 _ 90

_ZN4JohnD1Ev PROC NEAR
        push    ebp                                     ; 0032 _ 55
        mov     ebp, esp                                ; 0033 _ 89. E5
        pop     ebp                                     ; 0035 _ 5D
        ret                                             ; 0036 _ C3
_ZN4JohnD1Ev ENDP

        nop                                             ; 0037 _ 90

_ZN4John10helloClassEii PROC NEAR
        push    ebp                                     ; 0038 _ 55
        mov     ebp, esp                                ; 0039 _ 89. E5
        mov     edx, dword ptr [ebp+8H]                 ; 003B _ 8B. 55, 08
        mov     eax, dword ptr [ebp+0CH]                ; 003E _ 8B. 45, 0C
        mov     edx, dword ptr [edx]                    ; 0041 _ 8B. 12
        add     edx, eax                                ; 0043 _ 01. C2
        mov     ecx, dword ptr [ebp+8H]                 ; 0045 _ 8B. 4D, 08
        mov     eax, dword ptr [ebp+10H]                ; 0048 _ 8B. 45, 10
        add     eax, dword ptr [ecx+4H]                 ; 004B _ 03. 41, 04
        imul    edx, eax                                ; 004E _ 0F AF. D0
        mov     eax, edx                                ; 0051 _ 89. D0
        pop     ebp                                     ; 0053 _ 5D
        ret                                             ; 0054 _ C3
_ZN4John10helloClassEii ENDP

        nop                                             ; 0055 _ 90

_ZN4John4dumpEv PROC NEAR
        push    ebp                                     ; 0056 _ 55
        mov     ebp, esp                                ; 0057 _ 89. E5
        sub     esp, 24                                 ; 0059 _ 83. EC, 18
        mov     eax, dword ptr [ebp+8H]                 ; 005C _ 8B. 45, 08
        mov     eax, dword ptr [eax+4H]                 ; 005F _ 8B. 40, 04
        mov     dword ptr [esp+8H], eax                 ; 0062 _ 89. 44 24, 08
        mov     eax, dword ptr [ebp+8H]                 ; 0066 _ 8B. 45, 08
        mov     eax, dword ptr [eax]                    ; 0069 _ 8B. 00
        mov     dword ptr [esp+4H], eax                 ; 006B _ 89. 44 24, 04
        mov     dword ptr [esp], offset ?_002           ; 006F _ C7. 04 24, 00000000(d)
        call    printf                                  ; 0076 _ E8, FFFFFFFC(rel)
        leave                                           ; 007B _ C9
        ret                                             ; 007C _ C3
_ZN4John4dumpEv ENDP

        nop                                             ; 007D _ 90

_Z5helloii PROC NEAR
        push    ebp                                     ; 007E _ 55
        mov     ebp, esp                                ; 007F _ 89. E5
        push    ebx                                     ; 0081 _ 53
        sub     esp, 20                                 ; 0082 _ 83. EC, 14
        mov     dword ptr [esp], offset ?_003           ; 0085 _ C7. 04 24, 0000000D(d)
        call    printf                                  ; 008C _ E8, FFFFFFFC(rel)
        mov     dword ptr [esp], 8                      ; 0091 _ C7. 04 24, 00000008
        call    _Znwj                                   ; 0098 _ E8, FFFFFFFC(rel)
        mov     ebx, eax                                ; 009D _ 89. C3
        mov     dword ptr [esp+8H], 5                   ; 009F _ C7. 44 24, 08, 00000005
        mov     dword ptr [esp+4H], 4                   ; 00A7 _ C7. 44 24, 04, 00000004
        mov     dword ptr [esp], ebx                    ; 00AF _ 89. 1C 24
        call    _ZN4JohnC1Eii                           ; 00B2 _ E8, FFFFFF5F
        mov     dword ptr [ebp-8H], ebx                 ; 00B7 _ 89. 5D, F8
        mov     dword ptr [esp+8H], 2                   ; 00BA _ C7. 44 24, 08, 00000002
        mov     dword ptr [esp+4H], 1                   ; 00C2 _ C7. 44 24, 04, 00000001
        mov     eax, dword ptr [ebp-8H]                 ; 00CA _ 8B. 45, F8
        mov     dword ptr [esp], eax                    ; 00CD _ 89. 04 24
        call    _ZN4John10helloClassEii                 ; 00D0 _ E8, FFFFFF63
        mov     dword ptr [esp+4H], eax                 ; 00D5 _ 89. 44 24, 04
        mov     dword ptr [esp], offset ?_004           ; 00D9 _ C7. 04 24, 0000001B(d)
        call    printf                                  ; 00E0 _ E8, FFFFFFFC(rel)
        mov     eax, dword ptr [ebp-8H]                 ; 00E5 _ 8B. 45, F8
        mov     dword ptr [esp], eax                    ; 00E8 _ 89. 04 24
        call    _ZN4John4dumpEv                         ; 00EB _ E8, FFFFFF66
        mov     eax, dword ptr [ebp-8H]                 ; 00F0 _ 8B. 45, F8
        mov     dword ptr [ebp-0CH], eax                ; 00F3 _ 89. 45, F4
        cmp     dword ptr [ebp-0CH], 0                  ; 00F6 _ 83. 7D, F4, 00
        jz      ?_001                                   ; 00FA _ 74, 16
        mov     eax, dword ptr [ebp-0CH]                ; 00FC _ 8B. 45, F4
        mov     dword ptr [esp], eax                    ; 00FF _ 89. 04 24
        call    _ZN4JohnD1Ev                            ; 0102 _ E8, FFFFFF2B
        mov     eax, dword ptr [ebp-0CH]                ; 0107 _ 8B. 45, F4
        mov     dword ptr [esp], eax                    ; 010A _ 89. 04 24
        call    _ZdlPv                                  ; 010D _ E8, FFFFFFFC(rel)
?_001:  mov     eax, dword ptr [ebp+0CH]                ; 0112 _ 8B. 45, 0C
        add     eax, dword ptr [ebp+8H]                 ; 0115 _ 03. 45, 08
        imul    eax, dword ptr [ebp+0CH]                ; 0118 _ 0F AF. 45, 0C
        add     esp, 20                                 ; 011C _ 83. C4, 14
        pop     ebx                                     ; 011F _ 5B
        pop     ebp                                     ; 0120 _ 5D
        ret                                             ; 0121 _ C3
_Z5helloii ENDP

_Z4blahv PROC NEAR
        push    ebp                                     ; 0122 _ 55
        mov     ebp, esp                                ; 0123 _ 89. E5
        sub     esp, 40                                 ; 0125 _ 83. EC, 28
        mov     dword ptr [esp+8H], 2                   ; 0128 _ C7. 44 24, 08, 00000002
        mov     dword ptr [esp+4H], 1                   ; 0130 _ C7. 44 24, 04, 00000001
        lea     eax, [ebp-18H]                          ; 0138 _ 8D. 45, E8
        mov     dword ptr [esp], eax                    ; 013B _ 89. 04 24
        call    _ZN4JohnC1Eii                           ; 013E _ E8, FFFFFED3
        lea     eax, [ebp-18H]                          ; 0143 _ 8D. 45, E8
        mov     dword ptr [esp], eax                    ; 0146 _ 89. 04 24
        call    _ZN4John4dumpEv                         ; 0149 _ E8, FFFFFF08
        lea     eax, [ebp-18H]                          ; 014E _ 8D. 45, E8
        mov     dword ptr [esp], eax                    ; 0151 _ 89. 04 24
        call    _ZN4JohnD1Ev                            ; 0154 _ E8, FFFFFED9
        leave                                           ; 0159 _ C9
        ret                                             ; 015A _ C3
_Z4blahv ENDP

        nop                                             ; 015B _ 90
        nop                                             ; 015C _ 90
        nop                                             ; 015D _ 90
        nop                                             ; 015E _ 90
        nop                                             ; 015F _ 90

_text   ENDS

_data   SEGMENT BYTE PUBLIC 'DATA'                      ; section number 2

_data   ENDS

.bss    SEGMENT BYTE PUBLIC 'BSS'                       ; section number 3

.bss    ENDS

.rdata  SEGMENT BYTE PUBLIC 'CONST'                     ; section number 4

?_002   label byte
        db 4AH, 6FH, 68H, 6EH, 28H, 25H, 69H, 2CH       ; 0000 _ John(%i,
        db 25H, 69H, 29H, 0AH, 00H                      ; 0008 _ %i)..

?_003   label byte
        db 68H, 65H, 6CH, 6CH, 6FH, 20H, 63H, 61H       ; 000D _ hello ca
        db 6CH, 6CH, 65H, 64H, 0AH, 00H                 ; 0015 _ lled..

?_004   label byte
        db 65H, 78H, 70H, 65H, 63H, 74H, 20H, 33H       ; 001B _ expect 3
        db 35H, 2CH, 20H, 67H, 6FH, 74H, 3AH, 20H       ; 0023 _ 5, got: 
        db 25H, 69H, 0AH, 00H, 00H                      ; 002B _ %i...

.rdata  ENDS

END