Skip to content

Near branch instructions does not accept type hint #144

@lab-bat

Description

@lab-bat

Using nasm-3.01rc7 on following file (command: nasm -fwin32 test.asm -o test.obj -l test.lst)

segment .text code use16
test:
BITS 16
    jmp     $
    jmp     byte $
    jmp     dword $
o32 jmp     $
o32 jmp     byte $
o32 jmp     dword $
    jmp     short $
    jmp     short byte $
    jmp     short dword $
o32 jmp     short $
o32 jmp     short byte $
o32 jmp     short dword $
BITS 32
    jmp     $
    jmp     byte $
    jmp     dword $
o32 jmp     $
o32 jmp     byte $
o32 jmp     dword $
    jmp     short $
    jmp     short byte $
    jmp     short dword $
o32 jmp     short $
o32 jmp     short byte $
o32 jmp     short dword $
BITS 16
    jmp     $
    jmp     byte $
    jmp     word $
o16 jmp     $
o16 jmp     byte $
o16 jmp     word $
    jmp     short $
    jmp     short byte $
    jmp     short word $
o16 jmp     short $
o16 jmp     short byte $
o16 jmp     short word $
BITS 32
    jmp     $
    jmp     byte $
    jmp     word $
o16 jmp     $
o16 jmp     byte $
o16 jmp     word $
    jmp     short $
    jmp     short byte $
    jmp     short word $
o16 jmp     short $
o16 jmp     short byte $
o16 jmp     short word $
BITS 16
    call    $
    call    byte $
    call    dword $
o32 call    $
o32 call    byte $
o32 call    dword $
    call    short $
    call    short byte $
    call    short dword $
o32 call    short $
o32 call    short byte $
o32 call    short dword $
BITS 32
    call    $
    call    byte $
    call    dword $
o32 call    $
o32 call    byte $
o32 call    dword $
    call    short $
    call    short byte $
    call    short dword $
o32 call    short $
o32 call    short byte $
o32 call    short dword $
BITS 16
    call    $
    call    byte $
    call    word $
o16 call    $
o16 call    byte $
o16 call    word $
    call    short $
    call    short byte $
    call    short word $
o16 call    short $
o16 call    short byte $
o16 call    short word $
BITS 32
    call    $
    call    byte $
    call    word $
o16 call    $
o16 call    byte $
o16 call    word $
    call    short $
    call    short byte $
    call    short word $
o16 call    short $
o16 call    short byte $
o16 call    short word $
BITS 16
    jcxz    $
    jcxz    byte $
    jcxz    dword $
o32 jcxz    $
o32 jcxz    byte $
o32 jcxz    dword $
    jcxz    short $
    jcxz    short byte $
    jcxz    short dword $
o32 jcxz    short $
o32 jcxz    short byte $
o32 jcxz    short dword $
BITS 32
    jecxz   $
    jecxz   byte $
    jecxz   dword $
o32 jecxz   $
o32 jecxz   byte $
o32 jecxz   dword $
    jecxz   short $
    jecxz   short byte $
    jecxz   short dword $
o32 jecxz   short $
o32 jecxz   short byte $
o32 jecxz   short dword $
BITS 16
    jcxz    $
    jcxz    byte $
    jcxz    word $
o16 jcxz    $
o16 jcxz    byte $
o16 jcxz    word $
    jcxz    short $
    jcxz    short byte $
    jcxz    short word $
o16 jcxz    short $
o16 jcxz    short byte $
o16 jcxz    short word $
BITS 32
    jecxz   $
    jecxz   byte $
    jecxz   word $
o16 jecxz   $
o16 jecxz   byte $
o16 jecxz   word $
    jecxz   short $
    jecxz   short byte $
    jecxz   short word $
o16 jecxz   short $
o16 jecxz   short byte $
o16 jecxz   short word $
.end:

gives wrong op-code (should be near branch jump, not short branch jump).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions