winnt.c

来自「GUN开源阻止下的编译器GCC」· C语言 代码 · 共 61 行

C
61
字号
/* Subroutines for insn-output.c for Windows NT.   Contributed by Douglas Rupp (drupp@cs.washington.edu)   Copyright (C) 1995 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  */#include <stdio.h>#include "config.h"#include "rtl.h"#include "regs.h"#include "hard-reg-set.h"#include "output.h"#include "tree.h"#include "flags.h"/* Return string which is the former assembler name modified with a    suffix consisting of an atsign (@) followed by the number of bytes of    arguments */char *gen_stdcall_suffix (decl)  tree decl;{  int total = 0;  char *asmname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));  char *newsym;  if (TYPE_ARG_TYPES (TREE_TYPE (decl)))    if (TREE_VALUE (tree_last (TYPE_ARG_TYPES (TREE_TYPE (decl))))         == void_type_node)      {        tree formal_type = TYPE_ARG_TYPES (TREE_TYPE (decl));        while (TREE_VALUE (formal_type) != void_type_node)          {            total += TREE_INT_CST_LOW (TYPE_SIZE (TREE_VALUE (formal_type)));            formal_type = TREE_CHAIN (formal_type);          }      }  newsym = xmalloc (strlen (asmname) + 10);  sprintf (newsym, "%s@%d", asmname, total/BITS_PER_UNIT);  return IDENTIFIER_POINTER (get_identifier (newsym));}

⌨️ 快捷键说明

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