<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>sc68fordevelopers: /home/mandrake/rpm/BUILD/sc68-2.2.1/emu68/inst68.h File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul> </div> </div> <div class="contents"> <h1>/home/mandrake/rpm/BUILD/sc68-2.2.1/emu68/inst68.h File Reference</h1>68k arithmetic and logical instruction emulation. <a href="#_details">More...</a> <p> <code>#include "<a class="el" href="type68_8h_source.html">emu68/type68.h</a>"</code><br> <p> <a href="inst68_8h_source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td colspan="2"><div class="groupHeader">Arithmetic instructions.</div></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#fe25b6001cb9c19b6c7374290a07297d">add68</a> (<a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> a, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> b, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Addition. <a href="#fe25b6001cb9c19b6c7374290a07297d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#6fd001f5b3be1db144749719a0f30e89">sub68</a> (<a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> a, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> b, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Subtraction. <a href="#6fd001f5b3be1db144749719a0f30e89"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#033e1db23be6b2abac08a8f9b04e8778">muls68</a> (<a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> a, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Signed multiplication. <a href="#033e1db23be6b2abac08a8f9b04e8778"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#6912daba1274268ce61a2dac3798c0df">mulu68</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> a, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Unsigned multiplication. <a href="#6912daba1274268ce61a2dac3798c0df"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#3013f879d00ec945c0d03268c33d9b2d">divs68</a> (<a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> a, <a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Signed divide. <a href="#3013f879d00ec945c0d03268c33d9b2d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#0efc6474db1d3ac319c64e42116dca7d">divu68</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> a, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Unsigned divide. <a href="#0efc6474db1d3ac319c64e42116dca7d"></a><br></td></tr> <tr><td colspan="2"><div class="groupHeader">Logical instructions.</div></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#6ddfc249962d2735904c53ade48d432b">and68</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> a, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Bitwise AND. <a href="#6ddfc249962d2735904c53ade48d432b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#b1e224a758833bf6b5d42699f6b27e0e">orr68</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> a, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Bitwise OR. <a href="#b1e224a758833bf6b5d42699f6b27e0e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#11171db84407443290b3a0128c7f0081">eor68</a> (<a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> a, <a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Bitwise exclusif OR. <a href="#11171db84407443290b3a0128c7f0081"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="inst68_8h.html#166e295a1dd85115163c5e957c8a6390">not68</a> (<a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">First complement. <a href="#166e295a1dd85115163c5e957c8a6390"></a><br></td></tr> </table> <hr><h2>Detailed Description</h2> 68k arithmetic and logical instruction emulation. <p> <dl class="author" compact><dt><b>Author:</b></dt><dd>Ben(jamin) Gerard <<a href="mailto:ben@sashipa.com">ben@sashipa.com</a>> </dd></dl> <dl class="date" compact><dt><b>Date:</b></dt><dd>13/03/1999 </dd></dl> <dl class="version" compact><dt><b>Version:</b></dt><dd></dd></dl> <dl class="rcs" compact><dt><b>Id</b></dt><dd><a class="el" href="inst68_8h.html" title="68k arithmetic and logical instruction emulation.">inst68.h</a>,v 2.1 2003/09/30 06:29:57 benjihan Exp </dd></dl> <p> Logical and arithmetical instructions are emulated with functions instead of macros to prevent from excessive code size generation that hurt processor cache. By the way these functions could easily be written in assembler and improve emulator execution time. All these functions work with 32 bit values. To perform other size instructions, operands must be left shifted in order to locate operands most signifiant bit at the 31st bit. <hr><h2>Function Documentation</h2> <a class="anchor" name="fe25b6001cb9c19b6c7374290a07297d"></a><!-- doxytag: member="inst68.h::add68" ref="fe25b6001cb9c19b6c7374290a07297d" args="(s32 a, s32 b, s32 c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> add68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Addition. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a+b+c </dd></dl> </div> </div><p> <a class="anchor" name="6fd001f5b3be1db144749719a0f30e89"></a><!-- doxytag: member="inst68.h::sub68" ref="6fd001f5b3be1db144749719a0f30e89" args="(s32 a, s32 b, s32 c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> sub68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>b</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Subtraction. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a-b-c </dd></dl> </div> </div><p> <a class="anchor" name="033e1db23be6b2abac08a8f9b04e8778"></a><!-- doxytag: member="inst68.h::muls68" ref="033e1db23be6b2abac08a8f9b04e8778" args="(s32 a, s32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> muls68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Signed multiplication. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>(a>>16)*(b>>16) </dd></dl> </div> </div><p> <a class="anchor" name="6912daba1274268ce61a2dac3798c0df"></a><!-- doxytag: member="inst68.h::mulu68" ref="6912daba1274268ce61a2dac3798c0df" args="(u32 a, u32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> mulu68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Unsigned multiplication. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>(a>>16)*(b>>16) </dd></dl> </div> </div><p> <a class="anchor" name="3013f879d00ec945c0d03268c33d9b2d"></a><!-- doxytag: member="inst68.h::divs68" ref="3013f879d00ec945c0d03268c33d9b2d" args="(s32 a, s32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> divs68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Signed divide. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MSW:a%(b>>16) LSW:a/(b>>16) </dd></dl> </div> </div><p> <a class="anchor" name="0efc6474db1d3ac319c64e42116dca7d"></a><!-- doxytag: member="inst68.h::divu68" ref="0efc6474db1d3ac319c64e42116dca7d" args="(u32 a, u32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> divu68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Unsigned divide. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>MSW:a%(b>>16) LSW:a/(b>>16) </dd></dl> </div> </div><p> <a class="anchor" name="6ddfc249962d2735904c53ade48d432b"></a><!-- doxytag: member="inst68.h::and68" ref="6ddfc249962d2735904c53ade48d432b" args="(u32 a, u32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> and68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Bitwise AND. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a&b </dd></dl> </div> </div><p> <a class="anchor" name="b1e224a758833bf6b5d42699f6b27e0e"></a><!-- doxytag: member="inst68.h::orr68" ref="b1e224a758833bf6b5d42699f6b27e0e" args="(u32 a, u32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> orr68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Bitwise OR. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a|b </dd></dl> </div> </div><p> <a class="anchor" name="11171db84407443290b3a0128c7f0081"></a><!-- doxytag: member="inst68.h::eor68" ref="11171db84407443290b3a0128c7f0081" args="(u32 a, u32 b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> eor68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>a</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="type68_8h.html#10e94b422ef0c20dcdec20d31a1f5049">u32</a> </td> <td class="paramname"> <em>b</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Bitwise exclusif OR. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>a^b </dd></dl> </div> </div><p> <a class="anchor" name="166e295a1dd85115163c5e957c8a6390"></a><!-- doxytag: member="inst68.h::not68" ref="166e295a1dd85115163c5e957c8a6390" args="(s32 s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> not68 </td> <td>(</td> <td class="paramtype"><a class="el" href="type68_8h.html#0ce6887c26c1c49ad3be5710dd42bfd6">s32</a> </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> First complement. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>~s </dd></dl> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Sep 15 03:58:05 2009 for sc68fordevelopers by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>