⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wdis.gml

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 GML
📖 第 1 页 / 共 3 页
字号:
.code break
List of external references

SYMBOL
-------
printf                  0014

                                .new_section .const, "drw4"
0000                    L$0:
0000    48 65 6C 6C 6F 20 77 6F 72 6C 64 0A 00 00 00 00 Hello world.....

                                .new_section .const2, "drw4"

                                .new_section .data, "drw4"

                                .new_section .bss, "urw4"
0000                    .bss:

BSS Size: 0 bytes


                                .new_section .pdata, "dr2"

0000                    //  Procedure descriptor for main
        main                                    //  BeginAddress      : 0
        main+0x28                               //  EndAddress        : 40
        00000000                                //  ExceptionHandler  : 0
        00000000                                //  HandlerData       : 0
        main+0x8                                //  PrologEnd         : 8

                                .new_section .drectve, "iRr0"
0000    2D 64 65 66 61 75 6C 74 6C 69 62 3A 63 6C 69 62 -defaultlib:clib
0010    20 2D 64 65 66 61 75 6C 74 6C 69 62 3A 70 6C 69  -defaultlib:pli
0020    62 20 2D 64 65 66 61 75 6C 74 6C 69 62 3A 6D 61 b -defaultlib:ma
0030    74 68 20 00                                     th .

.code break
List of public symbols

SYMBOL                  SECTION                 OFFSET
--------------------------------------------------------
main                    .text                   00000000
.code end
.do end
.do end
.if '&lang' eq 'FORTRAN 77' .do begin
.if '&arch' eq '16-bit' .do begin
.code begin
Module: hello.for
GROUP: 'DGROUP' CONST,_DATA,_BSS

Segment: CONST PARA USE16 0000000B bytes
0000                    L$1:
0000    48 65 6C 6C 6F 20 77 6F 72 6C 64                Hello world

Segment: _DATA PARA USE16 00000006 bytes
0000                    L$2:
0000    00 00 00 00                                     DD      L$1
0004    0B 00                                           ..


BSS Size: 0 bytes

Segment: FMAIN_TEXT BYTE USE16 00000017 bytes

      program main
0000                    FMAIN:
0000    52                  PUSH      DX

      print *, 'Hello world'
0001    9A 00 00 00 00      CALL      RT@IOWrite
0006    B8 00 00            MOV       AX,offset L$2
0009    8C D2               MOV       DX,SS
000B    9A 00 00 00 00      CALL      RT@OutCHAR
0010    9A 00 00 00 00      CALL      RT@EndIO

      end
0015    5A                  POP       DX
0016    CB                  RETF

Routine Size: 23 bytes,    Routine Base: FMAIN_TEXT + 0000

No disassembly errors

.code break
List of external references

SYMBOL
-------
RT@EndIO                0011
RT@IOWrite              0002
RT@OutCHAR              000C

List of public symbols

SYMBOL                  SECTION                 OFFSET
--------------------------------------------------------
FMAIN                   FMAIN_TEXT              00000000
.code end
.do end
.if '&arch' eq '32-bit' .do begin
.code begin
Module: hello.for
Group: 'DGROUP' CONST,_DATA,_BSS
Group: 'FLAT'

Segment: 'FMAIN_TEXT' BYTE USE32  00000014 bytes

        program main
        print *, 'Hello world'
 0000  e8 00 00 00 00    FMAIN           call    RT@IOWrite
 0005  b8 00 00 00 00                    mov     EAX,offset L2
 000a  e8 00 00 00 00                    call    RT@OutCHAR
 000f  e9 00 00 00 00                    jmp     RT@EndIO
.code break
No disassembly errors

List of external symbols

Symbol
----------------
RT@EndIO         00000010
RT@IOWrite       00000001
RT@OutCHAR       0000000b
------------------------------------------------------------

Segment: 'CONST' WORD USE32  0000000b bytes
 0000  48 65 6c 6c 6f 20 77 6f L1              - Hello wo
 0008  72 6c 64                                - rld
.code break
No disassembly errors

------------------------------------------------------------

Segment: '_DATA' WORD USE32  00000008 bytes
 0000  00 00 00 00             L2              DD      DGROUP:L1
 0004  0b 00 00 00                             - ....
.code break
No disassembly errors

------------------------------------------------------------
List of public symbols

SYMBOL          GROUP           SEGMENT          ADDRESS
---------------------------------------------------------
FMAIN                           FMAIN_TEXT       00000000

------------------------------------------------------------

.code end
.do end
.do end
.keep
.np
Let us create a form of the listing file that can be used
as input to an assembler.
.millust begin
&prompt.&discmd hello &sw.l=hello.asm &sw.r &sw.a
.millust end
.pc
The output will be produced in the file
.fi hello.asm.
The output, shown below, is the result of using the
.if '&lang' eq 'C' or '&lang' eq 'C/C++' .do begin
&cmppname
.do end
.if '&lang' eq 'FORTRAN 77' .do begin
&cmpname
.do end
compiler.
.if '&lang' eq 'C' or '&lang' eq 'C/C++' .do begin
.if '&arch' eq '16-bit' .do begin
.code begin
.387
                PUBLIC  main_
                EXTRN   __STK:BYTE
                EXTRN   printf_:BYTE
                EXTRN   ___wcpp_3_data_init_fs_root_:BYTE
                EXTRN   _small_code_:BYTE
                EXTRN   _cstart_:BYTE
DGROUP          GROUP   CONST,CONST2,_DATA,_BSS
_TEXT           SEGMENT WORD PUBLIC USE16 'CODE'
                ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
main_:
    MOV       AX,0x00000004
    CALL      near ptr __STK
    MOV       AX,offset L$1
    PUSH      AX
    CALL      near ptr printf_
    ADD       SP,0x00000002
    XOR       AX,AX
    RET
_TEXT           ENDS
.code break
CONST           SEGMENT WORD PUBLIC USE16 'DATA'
L$1:
                DB      0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f
                DB      0x72, 0x6c, 0x64, 0x0a, 0x00

CONST           ENDS
CONST2          SEGMENT WORD PUBLIC USE16 'DATA'
CONST2          ENDS
_DATA           SEGMENT WORD PUBLIC USE16 'DATA'
_DATA           ENDS
_BSS            SEGMENT WORD PUBLIC USE16 'BSS'
_BSS            ENDS

                END
.code end
.do end
.if '&arch' eq '32-bit' .do begin
.np
The following is a disassembly of 80x86 code.
.code begin
~.387
~.386p
                PUBLIC  main_
                EXTRN   __CHK:BYTE
                EXTRN   printf_:BYTE
                EXTRN   ___wcpp_3_data_init_fs_root_:BYTE
                EXTRN   _cstart_:BYTE
DGROUP          GROUP   CONST,CONST2,_DATA,_BSS
_TEXT           SEGMENT DWORD PUBLIC USE32 'CODE'
                ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
main_:
    PUSH      0x00000008
    CALL      near ptr __CHK
    PUSH      offset L$1
    CALL      near ptr printf_
    ADD       ESP,0x00000004
    XOR       EAX,EAX
    RET
_TEXT           ENDS
.code break
CONST           SEGMENT DWORD PUBLIC USE32 'DATA'
L$1:
                DB      0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f
                DB      0x72, 0x6c, 0x64, 0x0a, 0x00

CONST           ENDS
CONST2          SEGMENT DWORD PUBLIC USE32 'DATA'
CONST2          ENDS
_DATA           SEGMENT DWORD PUBLIC USE32 'DATA'
_DATA           ENDS
_BSS            SEGMENT DWORD PUBLIC USE32 'BSS'
_BSS            ENDS

                END
.code end
.np
The following is a disassembly of Alpha AXP code.
.code begin
~.globl          main
~.extrn          printf
~.extrn          _cstart_
~.new_section .text, "crx4"
main:
    LDA           $SP,-0x10($SP)
    STQ           $RA,($SP)
    LDAH          $A0,h^`L$0`($ZERO)
    LDA           $A0,l^`L$0`($A0)
    SEXTL         $A0,$A0
    BSR           $RA,j^printf
    MOV           0x00000000,$V0
    LDQ           $RA,($SP)
    LDA           $SP,0x10($SP)
    RET           $ZERO,($RA),0x00000001
.code break
~.new_section .const, "drw4"
`L$0`:
                .asciiz "Hello world\n"
                .byte   0x00, 0x00, 0x00



~.new_section .pdata, "dr2"

                //  0000                Procedure descriptor for main
                .long   main                    //  BeginAddress      : 0
                .long   main+0x28               //  EndAddress        : 40
                .long   00000000                //  ExceptionHandler  : 0
                .long   00000000                //  HandlerData       : 0
                .long   main+0x8                //  PrologEnd         : 8

~.new_section .drectve, "iRr0"
                .asciiz "-defaultlib:clib -defaultlib:plib -defaultlib:math "

.code end
.do end
.do end
.if '&lang' eq 'FORTRAN 77' .do begin
.if '&arch' eq '16-bit' .do begin
.code begin
~.387
                PUBLIC  FMAIN
                EXTRN   `RT@IOWrite`:BYTE
                EXTRN   `RT@OutCHAR`:BYTE
                EXTRN   `RT@EndIO`:BYTE
                EXTRN   __init_error:BYTE
                EXTRN   __init_english:BYTE
                EXTRN   _cstart_:BYTE
DGROUP          GROUP   CONST,_DATA,_BSS
CONST           SEGMENT PARA PUBLIC USE16 'DATA'
L$1:
                DB      0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f
                DB      0x72, 0x6c, 0x64

CONST           ENDS
.code break
_DATA           SEGMENT PARA PUBLIC USE16 'DATA'
L$2:
                DD      L$1
                DB      0x0b, 0x00

_DATA           ENDS
_BSS            SEGMENT PARA PUBLIC USE16 'BSS'
_BSS            ENDS

FMAIN_TEXT              SEGMENT BYTE PUBLIC USE16 'CODE'
                ASSUME CS:FMAIN_TEXT, DS:DGROUP, SS:DGROUP
FMAIN:
    PUSH      DX
    CALL      far ptr `RT@IOWrite`
    MOV       AX,offset L$2
    MOV       DX,SS
    CALL      far ptr `RT@OutCHAR`
    CALL      far ptr `RT@EndIO`
    POP       DX
    RETF
FMAIN_TEXT              ENDS
                END
.code end
.do end
.if '&arch' eq '32-bit' .do begin
.code begin
~.387
~.386p
                PUBLIC  FMAIN
                EXTRN   `RT@IOWrite`:BYTE
                EXTRN   `RT@OutCHAR`:BYTE
                EXTRN   `RT@EndIO`:BYTE
                EXTRN   __init_error:BYTE
                EXTRN   __init_english:BYTE
                EXTRN   __init_387_emulator:BYTE
                EXTRN   _cstart_:BYTE
DGROUP          GROUP   CONST,_DATA,_BSS
CONST           SEGMENT PARA PUBLIC USE32 'DATA'
L$1:
                DB      0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f
                DB      0x72, 0x6c, 0x64

CONST           ENDS
.code break
_DATA           SEGMENT PARA PUBLIC USE32 'DATA'
L$2:
                DD      L$1
                DB      0x0b, 0x00, 0x00, 0x00

_DATA           ENDS
_BSS            SEGMENT PARA PUBLIC USE32 'BSS'
_BSS            ENDS

_TEXT           SEGMENT BYTE PUBLIC USE32 'CODE'
                ASSUME CS:_TEXT, DS:DGROUP, SS:DGROUP
FMAIN:
    CALL      near ptr `RT@IOWrite`
    MOV       EAX,offset L$2
    CALL      near ptr `RT@OutCHAR`
    JMP       near ptr `RT@EndIO`
_TEXT           ENDS
                END
.code end
.do end
.do end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -