Type-Conversions.html 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
  2. <html>
  3. <!-- Created on December 10, 2012 by texi2html 1.82
  4. texi2html was written by:
  5. Lionel Cons <[email protected]> (original author)
  6. Karl Berry <[email protected]>
  7. Olaf Bachmann <[email protected]>
  8. and many others.
  9. Maintained by: Many creative people.
  10. Send bugs and suggestions to <[email protected]>
  11. -->
  12. <head>
  13. <title>avram - a virtual machine code interpreter: 3.1.4 Type Conversions</title>
  14. <meta name="description" content="avram - a virtual machine code interpreter: 3.1.4 Type Conversions">
  15. <meta name="keywords" content="avram - a virtual machine code interpreter: 3.1.4 Type Conversions">
  16. <meta name="resource-type" content="document">
  17. <meta name="distribution" content="global">
  18. <meta name="Generator" content="texi2html 1.82">
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  20. <style type="text/css">
  21. <!--
  22. a.summary-letter {text-decoration: none}
  23. blockquote.smallquotation {font-size: smaller}
  24. pre.display {font-family: serif}
  25. pre.format {font-family: serif}
  26. pre.menu-comment {font-family: serif}
  27. pre.menu-preformatted {font-family: serif}
  28. pre.smalldisplay {font-family: serif; font-size: smaller}
  29. pre.smallexample {font-size: smaller}
  30. pre.smallformat {font-family: serif; font-size: smaller}
  31. pre.smalllisp {font-size: smaller}
  32. span.roman {font-family:serif; font-weight:normal;}
  33. span.sansserif {font-family:sans-serif; font-weight:normal;}
  34. ul.toc {list-style: none}
  35. -->
  36. </style>
  37. </head>
  38. <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
  39. <a name="Type-Conversions"></a>
  40. <table cellpadding="1" cellspacing="1" border="0">
  41. <tr><td valign="middle" align="left">[<a href="List-Transformations.html#List-Transformations" title="Previous section in reading order"> &lt; </a>]</td>
  42. <td valign="middle" align="left">[<a href="Primitive-types.html#Primitive-types" title="Next section in reading order"> &gt; </a>]</td>
  43. <td valign="middle" align="left"> &nbsp; </td>
  44. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  45. <td valign="middle" align="left">[<a href="Lists.html#Lists" title="Up section"> Up </a>]</td>
  46. <td valign="middle" align="left">[<a href="Character-Table.html#Character-Table" title="Next chapter"> &gt;&gt; </a>]</td>
  47. <td valign="middle" align="left"> &nbsp; </td>
  48. <td valign="middle" align="left"> &nbsp; </td>
  49. <td valign="middle" align="left"> &nbsp; </td>
  50. <td valign="middle" align="left"> &nbsp; </td>
  51. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  52. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  53. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  54. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  55. </tr></table>
  56. <hr size="1">
  57. <a name="Type-Conversions-1"></a>
  58. <h3 class="subsection">3.1.4 Type Conversions</h3>
  59. <p>External library functions accessed by the <code>library</code> combinator
  60. as explained in <a href="Library-combinator.html#Library-combinator">Library combinator</a> may operate on data other
  61. than the <code>list</code> type usually used by <code>avram</code>, such as
  62. floating point numbers and arrays, but a virtual code application must
  63. be able to represent the arguments and results of these functions in
  64. order to use them. As a matter of convention, a data structure
  65. occupying <var>size</var> bytes of contiguous storage on the host machine
  66. appears as a list of length <var>size</var> to a virtual code application,
  67. in which each item corresponds to a byte, and is represented according
  68. to <a href="Character-Table.html#Character-Table">Character Table</a>.
  69. </p>
  70. <p>In principle, a virtual code application invoking a library function
  71. to operate on a contiguous block of data, such as an IEEE double
  72. precision number, for example, would construct a list of eight
  73. character representations (one for each byte in a double precision
  74. number), and pass this list as an argument to the library
  75. function. The virtual machine would transparently convert this
  76. representation to the native floating point format, evaluate the
  77. function, and convert the result back to a list. In practice, high
  78. level language features beyond the scope of this document would
  79. insulate the programmer from some of the details on the application
  80. side as well.
  81. </p>
  82. <p>To save the time of repeatedly converting between the list
  83. representation and the contiguous native binary representation, the
  84. structure referenced by a <code>list</code> pointer contains a <code>value</code>
  85. <a name="index-value-field"></a>
  86. field which is a <code>void</code> pointer to a block of memory of
  87. unspecified type, and serves as a persistent cache of the value
  88. represented by the list. This field normally should be managed by the
  89. API rather than being accessed directly by client modules, but see the
  90. code in &lsquo;<tt>mpfr.c</tt>&rsquo; for an example of a situation in which it&rsquo;s
  91. appropriate to break this rule. (Generally these situations involve
  92. library functions operating on non-contiguous data.)
  93. </p>
  94. <table class="menu" border="0" cellspacing="0">
  95. <tr><td align="left" valign="top"><a href="Primitive-types.html#Primitive-types">3.1.4.1 Primitive types</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  96. </td></tr>
  97. <tr><td align="left" valign="top"><a href="One-dimensional-arrays.html#One-dimensional-arrays">3.1.4.2 One dimensional arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  98. </td></tr>
  99. <tr><td align="left" valign="top"><a href="Two-dimensional-arrays.html#Two-dimensional-arrays">3.1.4.3 Two dimensional arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  100. </td></tr>
  101. <tr><td align="left" valign="top"><a href="Related-utility-functions.html#Related-utility-functions">3.1.4.4 Related utility functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
  102. </td></tr>
  103. </table>
  104. <hr size="1">
  105. <table cellpadding="1" cellspacing="1" border="0">
  106. <tr><td valign="middle" align="left">[<a href="List-Transformations.html#List-Transformations" title="Previous section in reading order"> &lt; </a>]</td>
  107. <td valign="middle" align="left">[<a href="Primitive-types.html#Primitive-types" title="Next section in reading order"> &gt; </a>]</td>
  108. <td valign="middle" align="left"> &nbsp; </td>
  109. <td valign="middle" align="left">[<a href="Library-Reference.html#Library-Reference" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
  110. <td valign="middle" align="left">[<a href="Lists.html#Lists" title="Up section"> Up </a>]</td>
  111. <td valign="middle" align="left">[<a href="Character-Table.html#Character-Table" title="Next chapter"> &gt;&gt; </a>]</td>
  112. <td valign="middle" align="left"> &nbsp; </td>
  113. <td valign="middle" align="left"> &nbsp; </td>
  114. <td valign="middle" align="left"> &nbsp; </td>
  115. <td valign="middle" align="left"> &nbsp; </td>
  116. <td valign="middle" align="left">[<a href="avram.html#Top" title="Cover (top) of document">Top</a>]</td>
  117. <td valign="middle" align="left">[<a href="avram_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
  118. <td valign="middle" align="left">[<a href="Function-Index.html#Function-Index" title="Index">Index</a>]</td>
  119. <td valign="middle" align="left">[<a href="avram_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
  120. </tr></table>
  121. <p>
  122. <font size="-1">
  123. This document was generated on <i>December 10, 2012</i> using <a href="http://www.nongnu.org/texi2html/"><i>texi2html 1.82</i></a>.
  124. </font>
  125. <br>
  126. </p>
  127. </body>
  128. </html>