Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:multiasm:papc:chapter_6_10 [2025/10/31 10:38] – [Transcendental instructions] ktokarzen:multiasm:papc:chapter_6_10 [2025/10/31 16:28] (current) – [Table] ktokarz
Line 18: Line 18:
 </figure> </figure>
  
 +The stack organisation of registers makes it easier to implement math calculations according to the RPN (Reverse Polish Notation), also called postfix notation.
 Further in this section, we'll present the FPU coprocessor's instructions. They can be grouped as: Further in this section, we'll present the FPU coprocessor's instructions. They can be grouped as:
   * data transfer instructions,    * data transfer instructions, 
Line 163: Line 164:
 ===== Transcendental instructions ===== ===== Transcendental instructions =====
 The transcendental instructions perform calculations of advanced mathematical functions. The transcendental instructions perform calculations of advanced mathematical functions.
-FSIN Sine. +The **fsin** instruction calculates the sine, while the **fcos** calculates the cosine of the argument stored in ST(0)The **fsincos** calculates both sine and cosine with the same instructionThe sine is returned in ST(1), the cosine in ST(0)The **fptan** instruction calculates the partial tangent and **fpatan** the partial arctangent. After calculating the tangent, the value of 1.0 is pushed onto the stack to make it easier to calculate cotangent afterwards by execution **fdivr** instruction. The partial means that this instruction handles only a limited range of input arguments
-FCOS Cosine. +The instructions for exponential and logarithmic functions are summarised in table {{ref>ftrans}}
-FSINCOS Sine and cosine. +<table ftrans> 
-FPTAN Partial tangent. +<caption>Transcendental arithmetic instructions</caption> 
-FPATAN Partial arctangent. +^ Mnemonic     ^ operation                              ^ note on operands        ^ 
-F2XM1 2x − 1. +| **f2xm1**    | {{ :en:multiasm:cs:f2xm1.png?105 }}    |                         | 
-FYL2X y∗log2x+| **fyl2x**    | {{ :en:multiasm:cs:fyl2x.png?105 }}    | is ST(1); is ST(0)  | 
-FYL2XP1 y∗log2(x+1).+| **fyl2xp1**  | {{ :en:multiasm:cs:fyl2xp1.png?105 }}  | y is ST(1); x is ST(0)  | 
 +</table> 
 + 
 +===== FPU control instructions ===== 
 +The FPU control instructions help the programmer to save and restore the contents of chosen registers if there is a need to use them in an interrupt handler or inside a function. It is also possible to initialise the state of the FPU unit or clear errors. 
 +The **fincstp** increments and **fdecstp** decrements the FPU register stack pointer. 
 +The following set of instructions can perform error checking while execution (instructions without "N") or perform the operation without checking for error conditions (instructions without "N"). 
 +The **finit** and **fninit** initialise the FPU (after checking error conditions or without checking error conditions). 
 +The **fclex** and **fnclex** clear floating-point exception flags. 
 +The **fstcw** and **fnstcw** store the FPU control word. 
 +The **fldcw** loads the FPU control word. 
 +The **fstenv** and **fnstenr** store the FPU environment. The environment consists of the FPU control word, status 
 +word, tag word, instruction pointer, data pointer, and last opcode register. 
 +The **fldenv** loads the FPU environment. 
 +The **fsave** and **fnsave** save the FPU state. The state is the operating environment and full register stack. 
 +The **frstor** restores the FPU state. 
 +The **fstsw** and **fnstsw** store the FPU status word. There is no instruction for restoring the status word. 
 +The **wait** or **fwait** waits for the FPU to finish the operation. 
 +The **fnop** instruction is the no operation instruction for the FPU.
en/multiasm/papc/chapter_6_10.1761907122.txt.gz · Last modified: 2025/10/31 10:38 by ktokarz
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0