1. Си / Говнокод #28061

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    #pragma aux __cdecl "_*"                            \
                    parm caller [ ]                          \
                    value struct float struct routine [eax] \
                    modify [eax ecx edx]

    Запостил: kcalbCube, 28 Февраля 2022

    Комментарии (11) RSS

    • Прям любое соглашение можно запилить?
      Ответить
      • Да, даже на экстренное вступление в ЕС
        Ответить
      • зависит от определения "любое"
        Ответить
        • Ну все соглашения существующих конпеляторов, например.
          Ответить
          • ну да, там же не особо сложно: по каким регистрам раскидать, что в стек, и как передавать возвращаемое
            Ответить
            • А всякие выравнивания стека, редзоны и теневые зоны из amd64 соглашений можно выразить?

              Ну например что стек на момент вызова выровнен на 16.
              Ответить
              • ну watcom это x86_32.
                тут вообще много фич разных
                #include <stdio.h>
                #include <dos.h>
                
                int main(int argc, char *argv[]) {
                
                  union REGS r;
                
                  /* ah = 00h, int 16h "read key stroke" */
                  r.x.eax = 0x0000;
                  int386(0x16, &r, &r);
                
                  /* write the results to stdout */
                  printf("scan code = %d\n", r.h.ah);
                  printf("ascii     = %d\n", r.h.al);
                
                  return 0;
                }
                Ответить
      • https://govnokod.ru/25602#comment477597
        Ответить

    Добавить комментарий