This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:multiasm:papc:chapter_6_10 [2025/10/31 14:05] – [FPU] ktokarz | en:multiasm:papc:chapter_6_10 [2025/10/31 16:28] (current) – [Table] ktokarz | ||
|---|---|---|---|
| Line 164: | 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 |
| - | FCOS Cosine. | + | The instructions for exponential and logarithmic functions are summarised in table {{ref> |
| - | FSINCOS Sine and cosine. | + | <table ftrans> |
| - | FPTAN Partial tangent. | + | < |
| - | FPATAN Partial | + | ^ Mnemonic |
| - | F2XM1 2x − 1. | + | | **f2xm1** |
| - | FYL2X y∗log2x. | + | | **fyl2x** |
| - | FYL2XP1 | + | | **fyl2xp1** |
| + | </ | ||
| + | |||
| + | ===== 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 " | ||
| + | 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. | ||