Python-ELMO is a Python library which offers an encapsulation of the binary tool ELMO, in order to manipulate it easily in Python and SageMath script.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. /*
  2. * University of Bristol – Open Access Software Licence
  3. * Copyright (c) 2016, The University of Bristol, a chartered
  4. * corporation having Royal Charter number RC000648 and a charity
  5. * (number X1121) and its place of administration being at Senate
  6. * House, Tyndall Avenue, Bristol, BS8 1TH, United Kingdom.
  7. * All rights reserved
  8. *
  9. * Redistribution and use in source and binary forms, with or without
  10. * modification, are permitted provided that the following conditions
  11. * are met:
  12. *
  13. * 1. Redistributions of source code must retain the above copyright
  14. * notice, this list of conditions and the following disclaimer.
  15. *
  16. * 2. Redistributions in binary form must reproduce the above
  17. * copyright notice, this list of conditions and the following
  18. * disclaimer in the documentation and/or other materials provided
  19. * with the distribution.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  22. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  23. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  24. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  25. * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  26. * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  27. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  28. * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  30. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  31. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
  32. * OF THE POSSIBILITY OF SUCH DAMAGE.
  33. *
  34. * Any use of the software for scientific publications or commercial
  35. * purposes should be reported to the University of Bristol
  36. * (OSI-notifications@bristol.ac.uk and quote reference 2668). This is
  37. * for impact and usage monitoring purposes only.
  38. *
  39. * Enquiries about further applications and development opportunities
  40. * are welcome. Please contact elisabeth.oswald@bristol.ac.uk
  41. */
  42. /*
  43. * This file was based on files that are part of the libopencm3 project.
  44. * See below for licecning information.
  45. *
  46. * Copyright (C) 2009 Uwe Hermann <uwe@hermann-uwe.de>
  47. * Copyright (C) 2011 Stephen Caudle <scaudle@doceme.com>
  48. *
  49. * This library is free software: you can redistribute it and/or modify
  50. * it under the terms of the GNU Lesser General Public License as published by
  51. * the Free Software Foundation, either version 3 of the License, or
  52. * (at your option) any later version.
  53. *
  54. * This library is distributed in the hope that it will be useful,
  55. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  56. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  57. * GNU Lesser General Public License for more details.
  58. *
  59. * You should have received a copy of the GNU Lesser General Public License
  60. * along with this library. If not, see <http://www.gnu.org/licenses/>.
  61. */
  62. /* Linker script for ST STM32F0DISCOVERY (STM32F051R8T6, 64K flash, 8K RAM). */
  63. /* Define memory regions. */
  64. MEMORY
  65. {
  66. rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K
  67. ram (rwx) : ORIGIN = 0x20000000, LENGTH = 8K
  68. }
  69. /* Generic linker script for STM32 targets using libopencm3. */
  70. /* Memory regions must be defined in the ld script which includes this one. */
  71. /* Enforce emmition of the vector table. */
  72. EXTERN (vector_table)
  73. /* Define the entry point of the output file. */
  74. ENTRY(reset_handler)
  75. /* Define sections. */
  76. SECTIONS
  77. {
  78. .text : {
  79. *(.vectors) /* Vector table */
  80. *(.text*) /* Program code */
  81. . = ALIGN(4);
  82. *(.rodata*) /* Read-only data */
  83. . = ALIGN(4);
  84. } >rom
  85. /* C++ Static constructors/destructors, also used for __attribute__
  86. * ((constructor)) and the likes */
  87. .preinit_array : {
  88. . = ALIGN(4);
  89. __preinit_array_start = .;
  90. KEEP (*(.preinit_array))
  91. __preinit_array_end = .;
  92. } >rom
  93. .init_array : {
  94. . = ALIGN(4);
  95. __init_array_start = .;
  96. KEEP (*(SORT(.init_array.*)))
  97. KEEP (*(.init_array))
  98. __init_array_end = .;
  99. } >rom
  100. .fini_array : {
  101. . = ALIGN(4);
  102. __fini_array_start = .;
  103. KEEP (*(.fini_array))
  104. KEEP (*(SORT(.fini_array.*)))
  105. __fini_array_end = .;
  106. } >rom
  107. /*
  108. * Another section used by C++ stuff, appears when using newlib with
  109. * 64bit (long long) printf support
  110. */
  111. .ARM.extab : {
  112. *(.ARM.extab*)
  113. } >rom
  114. .ARM.exidx : {
  115. __exidx_start = .;
  116. *(.ARM.exidx*)
  117. __exidx_end = .;
  118. } >rom
  119. . = ALIGN(4);
  120. _etext = .;
  121. .data : {
  122. _data = .;
  123. *(.data*) /* Read-write initialized data */
  124. . = ALIGN(4);
  125. _edata = .;
  126. } >ram AT >rom
  127. _data_loadaddr = LOADADDR(.data);
  128. .bss : {
  129. *(.bss*) /* Read-write zero initialized data */
  130. *(COMMON)
  131. . = ALIGN(4);
  132. _ebss = .;
  133. } >ram
  134. /*
  135. * The .eh_frame section appears to be used for C++ exception handling.
  136. * You may need to fix this if you're using C++.
  137. */
  138. /DISCARD/ : { *(.eh_frame) }
  139. . = ALIGN(4);
  140. end = .;
  141. }
  142. PROVIDE(_stack = ORIGIN(ram) + LENGTH(ram));