⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 perform.h

📁 gcc编译工具没有什么特别
💻 H
字号:
/* Definitions for AT&T assembler syntax for the Intel 80386.   Copyright (C) 1993 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.  *//* Defines to be able to build libgcc.a with GCC.  *//* It might seem that these are not important, since gcc 2 will never   call libgcc for these functions.  But programs might be linked with   code compiled by gcc 1, and then these will be used.  *//* The arg names used to be a and b, but `a' appears inside strings   and that confuses non-ANSI cpp.  */#define perform_udivsi3(arg0,arg1)					\{									\  register int dx asm("dx");						\  register int ax asm("ax");						\									\  dx = 0;								\  ax = arg0;								\  asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1), "d" (dx)); \  return ax;								\}#define perform_divsi3(arg0,arg1)					\{									\  register int dx asm("dx");						\  register int ax asm("ax");						\  register int cx asm("cx");						\									\  ax = arg0;								\  cx = arg1;								\  asm ("cltd\n\tidivl %3" : "=a" (ax), "=&d" (dx) : "a" (ax), "c" (cx)); \  return ax;								\}#define perform_umodsi3(arg0,arg1)					\{									\  register int dx asm("dx");						\  register int ax asm("ax");						\									\  dx = 0;								\  ax = arg0;								\  asm ("divl %3" : "=a" (ax), "=d" (dx) : "a" (ax), "g" (arg1), "d" (dx)); \  return dx;								\}#define perform_modsi3(arg0,arg1)					\{									\  register int dx asm("dx");						\  register int ax asm("ax");						\  register int cx asm("cx");						\									\  ax = arg0;								\  cx = arg1;								\  asm ("cltd\n\tidivl %3" : "=a" (ax), "=&d" (dx) : "a" (ax), "c" (cx)); \  return dx;								\}#define perform_fixdfsi(arg0)						\{									\  auto unsigned short ostatus;						\  auto unsigned short nstatus;						\  auto int ret;								\  auto double tmp;							\									\  &ostatus;			/* guarantee these land in memory */	\  &nstatus;								\  &ret;									\  &tmp;									\									\  asm volatile ("fnstcw %0" : "=m" (ostatus));				\  nstatus = ostatus | 0x0c00;						\  asm volatile ("fldcw %0" : /* no outputs */ : "m" (nstatus));		\  tmp = arg0;								\  asm volatile ("fldl %0" : /* no outputs */ : "m" (tmp));		\  asm volatile ("fistpl %0" : "=m" (ret));				\  asm volatile ("fldcw %0" : /* no outputs */ : "m" (ostatus));		\									\  return ret;								\}

⌨️ 快捷键说明

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