fpopcode.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:14k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.     NetWinder Floating Point Emulator
  3.     (c) Rebel.COM, 1998,1999
  4.     Direct questions, comments to Scott Bambrough <scottb@netwinder.org>
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.     You should have received a copy of the GNU General Public License
  14.     along with this program; if not, write to the Free Software
  15.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  16. */
  17. #ifndef __FPOPCODE_H__
  18. #define __FPOPCODE_H__
  19. /*
  20. ARM Floating Point Instruction Classes
  21. | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 
  22. |c o n d|1 1 0 P|U|u|W|L|   Rn  |v|  Fd |0|0|0|1|  o f f s e t  | CPDT
  23. |c o n d|1 1 0 P|U|w|W|L|   Rn  |x|  Fd |0|0|0|1|  o f f s e t  | CPDT
  24. | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 
  25. |c o n d|1 1 1 0|a|b|c|d|e|  Fn |j|  Fd |0|0|0|1|f|g|h|0|i|  Fm | CPDO
  26. |c o n d|1 1 1 0|a|b|c|L|e|  Fn |   Rd  |0|0|0|1|f|g|h|1|i|  Fm | CPRT
  27. |c o n d|1 1 1 0|a|b|c|1|e|  Fn |1|1|1|1|0|0|0|1|f|g|h|1|i|  Fm | comparisons
  28. | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 
  29. CPDT data transfer instructions
  30. LDF, STF, LFM, SFM
  31. CPDO dyadic arithmetic instructions
  32. ADF, MUF, SUF, RSF, DVF, RDF,
  33. POW, RPW, RMF, FML, FDV, FRD, POL
  34. CPDO monadic arithmetic instructions
  35. MVF, MNF, ABS, RND, SQT, LOG, LGN, EXP,
  36. SIN, COS, TAN, ASN, ACS, ATN, URD, NRM
  37. CPRT joint arithmetic/data transfer instructions
  38. FIX (arithmetic followed by load/store)
  39. FLT (load/store followed by arithmetic)
  40. CMF, CNF CMFE, CNFE (comparisons)
  41. WFS, RFS (write/read floating point status register)
  42. WFC, RFC (write/read floating point control register)
  43. cond condition codes
  44. P pre/post index bit: 0 = postindex, 1 = preindex
  45. U up/down bit: 0 = stack grows down, 1 = stack grows up
  46. W write back bit: 1 = update base register (Rn)
  47. L load/store bit: 0 = store, 1 = load
  48. Rn base register
  49. Rd destination/source register
  50. Fd floating point destination register
  51. Fn floating point source register
  52. Fm floating point source register or floating point constant
  53. uv transfer length (TABLE 1)
  54. wx register count (TABLE 2)
  55. abcd arithmetic opcode (TABLES 3 & 4)
  56. ef destination size (rounding precision) (TABLE 5)
  57. gh rounding mode (TABLE 6)
  58. j dyadic/monadic bit: 0 = dyadic, 1 = monadic
  59. i  constant bit: 1 = constant (TABLE 6)
  60. */
  61. /*
  62. TABLE 1
  63. +-------------------------+---+---+---------+---------+
  64. |  Precision              | u | v | FPSR.EP | length  |
  65. +-------------------------+---+---+---------+---------+
  66. | Single                  | 0