modernc.org/ccgo/v3@v3.16.14/lib/testdata/tcc-0.9.27/tests/tests2/98_al_ax_extend.c (about)

     1  #include <stdio.h>
     2  #include <stdlib.h>
     3  asm (
     4      ".text;"
     5      ".globl _us;.globl _ss;.globl _uc;.globl _sc;"
     6      "_us:;_ss:;_uc:;_sc:;"
     7      "movl $0x1234ABCD, %eax;"
     8  	"ret;"
     9  );
    10  
    11  #if 1
    12  #define us _us
    13  #define ss _ss
    14  #define uc _uc
    15  #define sc _sc
    16  #endif
    17  
    18  int main()
    19  {
    20      unsigned short us(void);
    21      short ss(void);
    22      unsigned char uc(void);
    23      signed char sc(void);
    24  
    25      unsigned short (*fpus)(void) = us;
    26      short (*fpss)(void) = ss;
    27      unsigned char (*fpuc)(void) = uc;
    28      signed char (*fpsc)(void) = sc;
    29  
    30      printf("%08X %08X\n", us() + 1, fpus() + 1);
    31      printf("%08X %08X\n", ss() + 1, fpss() + 1);
    32      printf("%08X %08X\n", uc() + 1, fpuc() + 1);
    33      printf("%08X %08X\n", sc() + 1, fpsc() + 1);
    34      printf("\n");
    35      printf("%08X %08X\n", fpus() + 1, us() + 1);
    36      printf("%08X %08X\n", fpss() + 1, ss() + 1);
    37      printf("%08X %08X\n", fpuc() + 1, uc() + 1);
    38      printf("%08X %08X\n", fpsc() + 1, sc() + 1);
    39  
    40      return 0;
    41  }