tinycc-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] lcall invalid hex code


From: Sergey Korshunoff
Subject: Re: [Tinycc-devel] lcall invalid hex code
Date: Tue, 3 May 2016 06:03:55 +0300

> Fixed in mob, plus some more asm bugs (32 and 64 bit).

 ALT(DEF_ASM_OP1(lcall, 0xff, 3, OPC_MODRM, OPT_EA))        1) or
 ALT(DEF_ASM_OP1(lcall, 0xff, 3, OPC_MODRM, OPT_INDIR))    2) ?

A test code:
static unsigned long bios32_service(unsigned long service)
{
    int return_code;
    __asm__("lcall *(%%edi); cld"
        : "=a" (return_code)
        : "0" (service),
          "D" (&bios32_indirect));
    __asm__("lcall (%%edi); cld"
        : "=a" (return_code)
        : "0" (service),
          "D" (&bios32_indirect));
}

gcc/as prints warning for second case (indirect call w/o *). tcc with
1) accept all cases 2) don't accept second case (error:).

I looked at the "call" opcode 0xff modifiers
ALT(DEF_ASM_OP1(call, 0xff, 2, OPC_MODRM, OPT_INDIR))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]