- Timestamp:
- Feb 23, 2013, 1:16:55 AM (8 years ago)
- Location:
- extracted
- Files:
-
- 68 added
- 112 edited
Legend:
- Unmodified
- Added
- Removed
-
extracted/aSM.ml
r2649 r2717 60 60 61 61 open Identifiers 62 63 open BitVectorTrie 64 65 open Exp 62 66 63 67 open Arithmetic … … 109 113 -> 'a1) -> addressing_mode -> 'a1 **) 110 114 let rec addressing_mode_rect_Type4 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 111 | DIRECT x_ 59 -> h_DIRECT x_59112 | INDIRECT x_ 60 -> h_INDIRECT x_60113 | EXT_INDIRECT x_ 61 -> h_EXT_INDIRECT x_61114 | REGISTER x_ 62 -> h_REGISTER x_62115 | DIRECT x_18716 -> h_DIRECT x_18716 116 | INDIRECT x_18717 -> h_INDIRECT x_18717 117 | EXT_INDIRECT x_18718 -> h_EXT_INDIRECT x_18718 118 | REGISTER x_18719 -> h_REGISTER x_18719 115 119 | ACC_A -> h_ACC_A 116 120 | ACC_B -> h_ACC_B 117 121 | DPTR -> h_DPTR 118 | DATA x_ 63 -> h_DATA x_63119 | DATA16 x_ 64 -> h_DATA16 x_64122 | DATA x_18720 -> h_DATA x_18720 123 | DATA16 x_18721 -> h_DATA16 x_18721 120 124 | ACC_DPTR -> h_ACC_DPTR 121 125 | ACC_PC -> h_ACC_PC … … 123 127 | INDIRECT_DPTR -> h_INDIRECT_DPTR 124 128 | CARRY -> h_CARRY 125 | BIT_ADDR x_ 65 -> h_BIT_ADDR x_65126 | N_BIT_ADDR x_ 66 -> h_N_BIT_ADDR x_66127 | RELATIVE x_ 67 -> h_RELATIVE x_67128 | ADDR11 x_ 68 -> h_ADDR11 x_68129 | ADDR16 x_ 69 -> h_ADDR16 x_69129 | BIT_ADDR x_18722 -> h_BIT_ADDR x_18722 130 | N_BIT_ADDR x_18723 -> h_N_BIT_ADDR x_18723 131 | RELATIVE x_18724 -> h_RELATIVE x_18724 132 | ADDR11 x_18725 -> h_ADDR11 x_18725 133 | ADDR16 x_18726 -> h_ADDR16 x_18726 130 134 131 135 (** val addressing_mode_rect_Type5 : … … 137 141 -> 'a1) -> addressing_mode -> 'a1 **) 138 142 let rec addressing_mode_rect_Type5 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 139 | DIRECT x_ 90 -> h_DIRECT x_90140 | INDIRECT x_ 91 -> h_INDIRECT x_91141 | EXT_INDIRECT x_ 92 -> h_EXT_INDIRECT x_92142 | REGISTER x_ 93 -> h_REGISTER x_93143 | DIRECT x_18747 -> h_DIRECT x_18747 144 | INDIRECT x_18748 -> h_INDIRECT x_18748 145 | EXT_INDIRECT x_18749 -> h_EXT_INDIRECT x_18749 146 | REGISTER x_18750 -> h_REGISTER x_18750 143 147 | ACC_A -> h_ACC_A 144 148 | ACC_B -> h_ACC_B 145 149 | DPTR -> h_DPTR 146 | DATA x_ 94 -> h_DATA x_94147 | DATA16 x_ 95 -> h_DATA16 x_95150 | DATA x_18751 -> h_DATA x_18751 151 | DATA16 x_18752 -> h_DATA16 x_18752 148 152 | ACC_DPTR -> h_ACC_DPTR 149 153 | ACC_PC -> h_ACC_PC … … 151 155 | INDIRECT_DPTR -> h_INDIRECT_DPTR 152 156 | CARRY -> h_CARRY 153 | BIT_ADDR x_ 96 -> h_BIT_ADDR x_96154 | N_BIT_ADDR x_ 97 -> h_N_BIT_ADDR x_97155 | RELATIVE x_ 98 -> h_RELATIVE x_98156 | ADDR11 x_ 99 -> h_ADDR11 x_99157 | ADDR16 x_1 00 -> h_ADDR16 x_100157 | BIT_ADDR x_18753 -> h_BIT_ADDR x_18753 158 | N_BIT_ADDR x_18754 -> h_N_BIT_ADDR x_18754 159 | RELATIVE x_18755 -> h_RELATIVE x_18755 160 | ADDR11 x_18756 -> h_ADDR11 x_18756 161 | ADDR16 x_18757 -> h_ADDR16 x_18757 158 162 159 163 (** val addressing_mode_rect_Type3 : … … 165 169 -> 'a1) -> addressing_mode -> 'a1 **) 166 170 let rec addressing_mode_rect_Type3 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 167 | DIRECT x_1 21 -> h_DIRECT x_121168 | INDIRECT x_1 22 -> h_INDIRECT x_122169 | EXT_INDIRECT x_1 23 -> h_EXT_INDIRECT x_123170 | REGISTER x_1 24 -> h_REGISTER x_124171 | DIRECT x_18778 -> h_DIRECT x_18778 172 | INDIRECT x_18779 -> h_INDIRECT x_18779 173 | EXT_INDIRECT x_18780 -> h_EXT_INDIRECT x_18780 174 | REGISTER x_18781 -> h_REGISTER x_18781 171 175 | ACC_A -> h_ACC_A 172 176 | ACC_B -> h_ACC_B 173 177 | DPTR -> h_DPTR 174 | DATA x_1 25 -> h_DATA x_125175 | DATA16 x_1 26 -> h_DATA16 x_126178 | DATA x_18782 -> h_DATA x_18782 179 | DATA16 x_18783 -> h_DATA16 x_18783 176 180 | ACC_DPTR -> h_ACC_DPTR 177 181 | ACC_PC -> h_ACC_PC … … 179 183 | INDIRECT_DPTR -> h_INDIRECT_DPTR 180 184 | CARRY -> h_CARRY 181 | BIT_ADDR x_1 27 -> h_BIT_ADDR x_127182 | N_BIT_ADDR x_1 28 -> h_N_BIT_ADDR x_128183 | RELATIVE x_1 29 -> h_RELATIVE x_129184 | ADDR11 x_1 30 -> h_ADDR11 x_130185 | ADDR16 x_1 31 -> h_ADDR16 x_131185 | BIT_ADDR x_18784 -> h_BIT_ADDR x_18784 186 | N_BIT_ADDR x_18785 -> h_N_BIT_ADDR x_18785 187 | RELATIVE x_18786 -> h_RELATIVE x_18786 188 | ADDR11 x_18787 -> h_ADDR11 x_18787 189 | ADDR16 x_18788 -> h_ADDR16 x_18788 186 190 187 191 (** val addressing_mode_rect_Type2 : … … 193 197 -> 'a1) -> addressing_mode -> 'a1 **) 194 198 let rec addressing_mode_rect_Type2 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 195 | DIRECT x_1 52 -> h_DIRECT x_152196 | INDIRECT x_1 53 -> h_INDIRECT x_153197 | EXT_INDIRECT x_1 54 -> h_EXT_INDIRECT x_154198 | REGISTER x_1 55 -> h_REGISTER x_155199 | DIRECT x_18809 -> h_DIRECT x_18809 200 | INDIRECT x_18810 -> h_INDIRECT x_18810 201 | EXT_INDIRECT x_18811 -> h_EXT_INDIRECT x_18811 202 | REGISTER x_18812 -> h_REGISTER x_18812 199 203 | ACC_A -> h_ACC_A 200 204 | ACC_B -> h_ACC_B 201 205 | DPTR -> h_DPTR 202 | DATA x_1 56 -> h_DATA x_156203 | DATA16 x_1 57 -> h_DATA16 x_157206 | DATA x_18813 -> h_DATA x_18813 207 | DATA16 x_18814 -> h_DATA16 x_18814 204 208 | ACC_DPTR -> h_ACC_DPTR 205 209 | ACC_PC -> h_ACC_PC … … 207 211 | INDIRECT_DPTR -> h_INDIRECT_DPTR 208 212 | CARRY -> h_CARRY 209 | BIT_ADDR x_1 58 -> h_BIT_ADDR x_158210 | N_BIT_ADDR x_1 59 -> h_N_BIT_ADDR x_159211 | RELATIVE x_1 60 -> h_RELATIVE x_160212 | ADDR11 x_1 61 -> h_ADDR11 x_161213 | ADDR16 x_1 62 -> h_ADDR16 x_162213 | BIT_ADDR x_18815 -> h_BIT_ADDR x_18815 214 | N_BIT_ADDR x_18816 -> h_N_BIT_ADDR x_18816 215 | RELATIVE x_18817 -> h_RELATIVE x_18817 216 | ADDR11 x_18818 -> h_ADDR11 x_18818 217 | ADDR16 x_18819 -> h_ADDR16 x_18819 214 218 215 219 (** val addressing_mode_rect_Type1 : … … 221 225 -> 'a1) -> addressing_mode -> 'a1 **) 222 226 let rec addressing_mode_rect_Type1 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 223 | DIRECT x_18 3 -> h_DIRECT x_183224 | INDIRECT x_18 4 -> h_INDIRECT x_184225 | EXT_INDIRECT x_18 5 -> h_EXT_INDIRECT x_185226 | REGISTER x_18 6 -> h_REGISTER x_186227 | DIRECT x_18840 -> h_DIRECT x_18840 228 | INDIRECT x_18841 -> h_INDIRECT x_18841 229 | EXT_INDIRECT x_18842 -> h_EXT_INDIRECT x_18842 230 | REGISTER x_18843 -> h_REGISTER x_18843 227 231 | ACC_A -> h_ACC_A 228 232 | ACC_B -> h_ACC_B 229 233 | DPTR -> h_DPTR 230 | DATA x_18 7 -> h_DATA x_187231 | DATA16 x_188 -> h_DATA16 x_188234 | DATA x_18844 -> h_DATA x_18844 235 | DATA16 x_18845 -> h_DATA16 x_18845 232 236 | ACC_DPTR -> h_ACC_DPTR 233 237 | ACC_PC -> h_ACC_PC … … 235 239 | INDIRECT_DPTR -> h_INDIRECT_DPTR 236 240 | CARRY -> h_CARRY 237 | BIT_ADDR x_18 9 -> h_BIT_ADDR x_189238 | N_BIT_ADDR x_1 90 -> h_N_BIT_ADDR x_190239 | RELATIVE x_1 91 -> h_RELATIVE x_191240 | ADDR11 x_1 92 -> h_ADDR11 x_192241 | ADDR16 x_1 93 -> h_ADDR16 x_193241 | BIT_ADDR x_18846 -> h_BIT_ADDR x_18846 242 | N_BIT_ADDR x_18847 -> h_N_BIT_ADDR x_18847 243 | RELATIVE x_18848 -> h_RELATIVE x_18848 244 | ADDR11 x_18849 -> h_ADDR11 x_18849 245 | ADDR16 x_18850 -> h_ADDR16 x_18850 242 246 243 247 (** val addressing_mode_rect_Type0 : … … 249 253 -> 'a1) -> addressing_mode -> 'a1 **) 250 254 let rec addressing_mode_rect_Type0 h_DIRECT h_INDIRECT h_EXT_INDIRECT h_REGISTER h_ACC_A h_ACC_B h_DPTR h_DATA h_DATA16 h_ACC_DPTR h_ACC_PC h_EXT_INDIRECT_DPTR h_INDIRECT_DPTR h_CARRY h_BIT_ADDR h_N_BIT_ADDR h_RELATIVE h_ADDR11 h_ADDR16 = function 251 | DIRECT x_ 214 -> h_DIRECT x_214252 | INDIRECT x_ 215 -> h_INDIRECT x_215253 | EXT_INDIRECT x_ 216 -> h_EXT_INDIRECT x_216254 | REGISTER x_ 217 -> h_REGISTER x_217255 | DIRECT x_18871 -> h_DIRECT x_18871 256 | INDIRECT x_18872 -> h_INDIRECT x_18872 257 | EXT_INDIRECT x_18873 -> h_EXT_INDIRECT x_18873 258 | REGISTER x_18874 -> h_REGISTER x_18874 255 259 | ACC_A -> h_ACC_A 256 260 | ACC_B -> h_ACC_B 257 261 | DPTR -> h_DPTR 258 | DATA x_ 218 -> h_DATA x_218259 | DATA16 x_ 219 -> h_DATA16 x_219262 | DATA x_18875 -> h_DATA x_18875 263 | DATA16 x_18876 -> h_DATA16 x_18876 260 264 | ACC_DPTR -> h_ACC_DPTR 261 265 | ACC_PC -> h_ACC_PC … … 263 267 | INDIRECT_DPTR -> h_INDIRECT_DPTR 264 268 | CARRY -> h_CARRY 265 | BIT_ADDR x_ 220 -> h_BIT_ADDR x_220266 | N_BIT_ADDR x_ 221 -> h_N_BIT_ADDR x_221267 | RELATIVE x_ 222 -> h_RELATIVE x_222268 | ADDR11 x_ 223 -> h_ADDR11 x_223269 | ADDR16 x_ 224 -> h_ADDR16 x_224269 | BIT_ADDR x_18877 -> h_BIT_ADDR x_18877 270 | N_BIT_ADDR x_18878 -> h_N_BIT_ADDR x_18878 271 | RELATIVE x_18879 -> h_RELATIVE x_18879 272 | ADDR11 x_18880 -> h_ADDR11 x_18880 273 | ADDR16 x_18881 -> h_ADDR16 x_18881 270 274 271 275 (** val addressing_mode_inv_rect_Type4 : … … 1924 1928 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1925 1929 'a1) -> subaddressing_mode -> 'a1 **) 1926 let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_ 692=1927 let subaddressing_modeel = x_ 692in1930 let rec subaddressing_mode_rect_Type4 n l h_mk_subaddressing_mode x_19349 = 1931 let subaddressing_modeel = x_19349 in 1928 1932 h_mk_subaddressing_mode subaddressing_modeel __ 1929 1933 … … 1931 1935 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1932 1936 'a1) -> subaddressing_mode -> 'a1 **) 1933 let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_ 694=1934 let subaddressing_modeel = x_ 694in1937 let rec subaddressing_mode_rect_Type5 n l h_mk_subaddressing_mode x_19351 = 1938 let subaddressing_modeel = x_19351 in 1935 1939 h_mk_subaddressing_mode subaddressing_modeel __ 1936 1940 … … 1938 1942 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1939 1943 'a1) -> subaddressing_mode -> 'a1 **) 1940 let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_ 696=1941 let subaddressing_modeel = x_ 696in1944 let rec subaddressing_mode_rect_Type3 n l h_mk_subaddressing_mode x_19353 = 1945 let subaddressing_modeel = x_19353 in 1942 1946 h_mk_subaddressing_mode subaddressing_modeel __ 1943 1947 … … 1945 1949 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1946 1950 'a1) -> subaddressing_mode -> 'a1 **) 1947 let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_ 698=1948 let subaddressing_modeel = x_ 698in1951 let rec subaddressing_mode_rect_Type2 n l h_mk_subaddressing_mode x_19355 = 1952 let subaddressing_modeel = x_19355 in 1949 1953 h_mk_subaddressing_mode subaddressing_modeel __ 1950 1954 … … 1952 1956 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1953 1957 'a1) -> subaddressing_mode -> 'a1 **) 1954 let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_ 700=1955 let subaddressing_modeel = x_ 700in1958 let rec subaddressing_mode_rect_Type1 n l h_mk_subaddressing_mode x_19357 = 1959 let subaddressing_modeel = x_19357 in 1956 1960 h_mk_subaddressing_mode subaddressing_modeel __ 1957 1961 … … 1959 1963 Nat.nat -> addressing_mode_tag Vector.vector -> (addressing_mode -> __ -> 1960 1964 'a1) -> subaddressing_mode -> 'a1 **) 1961 let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_ 702=1962 let subaddressing_modeel = x_ 702in1965 let rec subaddressing_mode_rect_Type0 n l h_mk_subaddressing_mode x_19359 = 1966 let subaddressing_modeel = x_19359 in 1963 1967 h_mk_subaddressing_mode subaddressing_modeel __ 1964 1968 … … 2094 2098 | RETI 2095 2099 | NOP 2100 | JMP of subaddressing_mode 2096 2101 2097 2102 (** val preinstruction_rect_Type4 : … … 2129 2134 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2130 2135 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2131 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2132 let rec preinstruction_rect_Type4 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2133 | ADD (x_ 802, x_801) -> h_ADD x_802 x_8012134 | ADDC (x_ 804, x_803) -> h_ADDC x_804 x_8032135 | SUBB (x_ 806, x_805) -> h_SUBB x_806 x_8052136 | INC x_ 807 -> h_INC x_8072137 | DEC x_ 808 -> h_DEC x_8082138 | MUL (x_ 810, x_809) -> h_MUL x_810 x_8092139 | DIV (x_ 812, x_811) -> h_DIV x_812 x_8112140 | DA x_ 813 -> h_DA x_8132141 | JC x_ 814 -> h_JC x_8142142 | JNC x_ 815 -> h_JNC x_8152143 | JB (x_ 817, x_816) -> h_JB x_817 x_8162144 | JNB (x_ 819, x_818) -> h_JNB x_819 x_8182145 | JBC (x_ 821, x_820) -> h_JBC x_821 x_8202146 | JZ x_ 822 -> h_JZ x_8222147 | JNZ x_ 823 -> h_JNZ x_8232148 | CJNE (x_ 825, x_824) -> h_CJNE x_825 x_8242149 | DJNZ (x_ 827, x_826) -> h_DJNZ x_827 x_8262150 | ANL x_ 828 -> h_ANL x_8282151 | ORL x_ 829 -> h_ORL x_8292152 | XRL x_ 830 -> h_XRL x_8302153 | CLR x_ 831 -> h_CLR x_8312154 | CPL x_ 832 -> h_CPL x_8322155 | RL x_ 833 -> h_RL x_8332156 | RLC x_ 834 -> h_RLC x_8342157 | RR x_ 835 -> h_RR x_8352158 | RRC x_ 836 -> h_RRC x_8362159 | SWAP x_ 837 -> h_SWAP x_8372160 | MOV x_ 838 -> h_MOV x_8382161 | MOVX x_ 839 -> h_MOVX x_8392162 | SETB x_ 840 -> h_SETB x_8402163 | PUSH x_ 841 -> h_PUSH x_8412164 | POP x_ 842 -> h_POP x_8422165 | XCH (x_ 844, x_843) -> h_XCH x_844 x_8432166 | XCHD (x_ 846, x_845) -> h_XCHD x_846 x_8452136 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2137 let rec preinstruction_rect_Type4 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2138 | ADD (x_19461, x_19460) -> h_ADD x_19461 x_19460 2139 | ADDC (x_19463, x_19462) -> h_ADDC x_19463 x_19462 2140 | SUBB (x_19465, x_19464) -> h_SUBB x_19465 x_19464 2141 | INC x_19466 -> h_INC x_19466 2142 | DEC x_19467 -> h_DEC x_19467 2143 | MUL (x_19469, x_19468) -> h_MUL x_19469 x_19468 2144 | DIV (x_19471, x_19470) -> h_DIV x_19471 x_19470 2145 | DA x_19472 -> h_DA x_19472 2146 | JC x_19473 -> h_JC x_19473 2147 | JNC x_19474 -> h_JNC x_19474 2148 | JB (x_19476, x_19475) -> h_JB x_19476 x_19475 2149 | JNB (x_19478, x_19477) -> h_JNB x_19478 x_19477 2150 | JBC (x_19480, x_19479) -> h_JBC x_19480 x_19479 2151 | JZ x_19481 -> h_JZ x_19481 2152 | JNZ x_19482 -> h_JNZ x_19482 2153 | CJNE (x_19484, x_19483) -> h_CJNE x_19484 x_19483 2154 | DJNZ (x_19486, x_19485) -> h_DJNZ x_19486 x_19485 2155 | ANL x_19487 -> h_ANL x_19487 2156 | ORL x_19488 -> h_ORL x_19488 2157 | XRL x_19489 -> h_XRL x_19489 2158 | CLR x_19490 -> h_CLR x_19490 2159 | CPL x_19491 -> h_CPL x_19491 2160 | RL x_19492 -> h_RL x_19492 2161 | RLC x_19493 -> h_RLC x_19493 2162 | RR x_19494 -> h_RR x_19494 2163 | RRC x_19495 -> h_RRC x_19495 2164 | SWAP x_19496 -> h_SWAP x_19496 2165 | MOV x_19497 -> h_MOV x_19497 2166 | MOVX x_19498 -> h_MOVX x_19498 2167 | SETB x_19499 -> h_SETB x_19499 2168 | PUSH x_19500 -> h_PUSH x_19500 2169 | POP x_19501 -> h_POP x_19501 2170 | XCH (x_19503, x_19502) -> h_XCH x_19503 x_19502 2171 | XCHD (x_19505, x_19504) -> h_XCHD x_19505 x_19504 2167 2172 | RET -> h_RET 2168 2173 | RETI -> h_RETI 2169 2174 | NOP -> h_NOP 2175 | JMP x_19506 -> h_JMP x_19506 2170 2176 2171 2177 (** val preinstruction_rect_Type5 : … … 2203 2209 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2204 2210 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2205 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2206 let rec preinstruction_rect_Type5 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2207 | ADD (x_ 886, x_885) -> h_ADD x_886 x_8852208 | ADDC (x_ 888, x_887) -> h_ADDC x_888 x_8872209 | SUBB (x_ 890, x_889) -> h_SUBB x_890 x_8892210 | INC x_ 891 -> h_INC x_8912211 | DEC x_ 892 -> h_DEC x_8922212 | MUL (x_ 894, x_893) -> h_MUL x_894 x_8932213 | DIV (x_ 896, x_895) -> h_DIV x_896 x_8952214 | DA x_ 897 -> h_DA x_8972215 | JC x_ 898 -> h_JC x_8982216 | JNC x_ 899 -> h_JNC x_8992217 | JB (x_ 901, x_900) -> h_JB x_901 x_9002218 | JNB (x_ 903, x_902) -> h_JNB x_903 x_9022219 | JBC (x_ 905, x_904) -> h_JBC x_905 x_9042220 | JZ x_ 906 -> h_JZ x_9062221 | JNZ x_ 907 -> h_JNZ x_9072222 | CJNE (x_ 909, x_908) -> h_CJNE x_909 x_9082223 | DJNZ (x_ 911, x_910) -> h_DJNZ x_911 x_9102224 | ANL x_ 912 -> h_ANL x_9122225 | ORL x_ 913 -> h_ORL x_9132226 | XRL x_ 914 -> h_XRL x_9142227 | CLR x_ 915 -> h_CLR x_9152228 | CPL x_ 916 -> h_CPL x_9162229 | RL x_ 917 -> h_RL x_9172230 | RLC x_ 918 -> h_RLC x_9182231 | RR x_ 919 -> h_RR x_9192232 | RRC x_ 920 -> h_RRC x_9202233 | SWAP x_ 921 -> h_SWAP x_9212234 | MOV x_ 922 -> h_MOV x_9222235 | MOVX x_ 923 -> h_MOVX x_9232236 | SETB x_ 924 -> h_SETB x_9242237 | PUSH x_ 925 -> h_PUSH x_9252238 | POP x_ 926 -> h_POP x_9262239 | XCH (x_ 928, x_927) -> h_XCH x_928 x_9272240 | XCHD (x_ 930, x_929) -> h_XCHD x_930 x_9292211 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2212 let rec preinstruction_rect_Type5 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2213 | ADD (x_19547, x_19546) -> h_ADD x_19547 x_19546 2214 | ADDC (x_19549, x_19548) -> h_ADDC x_19549 x_19548 2215 | SUBB (x_19551, x_19550) -> h_SUBB x_19551 x_19550 2216 | INC x_19552 -> h_INC x_19552 2217 | DEC x_19553 -> h_DEC x_19553 2218 | MUL (x_19555, x_19554) -> h_MUL x_19555 x_19554 2219 | DIV (x_19557, x_19556) -> h_DIV x_19557 x_19556 2220 | DA x_19558 -> h_DA x_19558 2221 | JC x_19559 -> h_JC x_19559 2222 | JNC x_19560 -> h_JNC x_19560 2223 | JB (x_19562, x_19561) -> h_JB x_19562 x_19561 2224 | JNB (x_19564, x_19563) -> h_JNB x_19564 x_19563 2225 | JBC (x_19566, x_19565) -> h_JBC x_19566 x_19565 2226 | JZ x_19567 -> h_JZ x_19567 2227 | JNZ x_19568 -> h_JNZ x_19568 2228 | CJNE (x_19570, x_19569) -> h_CJNE x_19570 x_19569 2229 | DJNZ (x_19572, x_19571) -> h_DJNZ x_19572 x_19571 2230 | ANL x_19573 -> h_ANL x_19573 2231 | ORL x_19574 -> h_ORL x_19574 2232 | XRL x_19575 -> h_XRL x_19575 2233 | CLR x_19576 -> h_CLR x_19576 2234 | CPL x_19577 -> h_CPL x_19577 2235 | RL x_19578 -> h_RL x_19578 2236 | RLC x_19579 -> h_RLC x_19579 2237 | RR x_19580 -> h_RR x_19580 2238 | RRC x_19581 -> h_RRC x_19581 2239 | SWAP x_19582 -> h_SWAP x_19582 2240 | MOV x_19583 -> h_MOV x_19583 2241 | MOVX x_19584 -> h_MOVX x_19584 2242 | SETB x_19585 -> h_SETB x_19585 2243 | PUSH x_19586 -> h_PUSH x_19586 2244 | POP x_19587 -> h_POP x_19587 2245 | XCH (x_19589, x_19588) -> h_XCH x_19589 x_19588 2246 | XCHD (x_19591, x_19590) -> h_XCHD x_19591 x_19590 2241 2247 | RET -> h_RET 2242 2248 | RETI -> h_RETI 2243 2249 | NOP -> h_NOP 2250 | JMP x_19592 -> h_JMP x_19592 2244 2251 2245 2252 (** val preinstruction_rect_Type3 : … … 2277 2284 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2278 2285 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2279 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2280 let rec preinstruction_rect_Type3 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2281 | ADD (x_ 970, x_969) -> h_ADD x_970 x_9692282 | ADDC (x_ 972, x_971) -> h_ADDC x_972 x_9712283 | SUBB (x_ 974, x_973) -> h_SUBB x_974 x_9732284 | INC x_ 975 -> h_INC x_9752285 | DEC x_ 976 -> h_DEC x_9762286 | MUL (x_ 978, x_977) -> h_MUL x_978 x_9772287 | DIV (x_ 980, x_979) -> h_DIV x_980 x_9792288 | DA x_ 981 -> h_DA x_9812289 | JC x_ 982 -> h_JC x_9822290 | JNC x_ 983 -> h_JNC x_9832291 | JB (x_ 985, x_984) -> h_JB x_985 x_9842292 | JNB (x_ 987, x_986) -> h_JNB x_987 x_9862293 | JBC (x_ 989, x_988) -> h_JBC x_989 x_9882294 | JZ x_ 990 -> h_JZ x_9902295 | JNZ x_ 991 -> h_JNZ x_9912296 | CJNE (x_ 993, x_992) -> h_CJNE x_993 x_9922297 | DJNZ (x_ 995, x_994) -> h_DJNZ x_995 x_9942298 | ANL x_ 996 -> h_ANL x_9962299 | ORL x_ 997 -> h_ORL x_9972300 | XRL x_ 998 -> h_XRL x_9982301 | CLR x_ 999 -> h_CLR x_9992302 | CPL x_1 000 -> h_CPL x_10002303 | RL x_1 001 -> h_RL x_10012304 | RLC x_1 002 -> h_RLC x_10022305 | RR x_1 003 -> h_RR x_10032306 | RRC x_1 004 -> h_RRC x_10042307 | SWAP x_1 005 -> h_SWAP x_10052308 | MOV x_1 006 -> h_MOV x_10062309 | MOVX x_1 007 -> h_MOVX x_10072310 | SETB x_1 008 -> h_SETB x_10082311 | PUSH x_1 009 -> h_PUSH x_10092312 | POP x_1 010 -> h_POP x_10102313 | XCH (x_1 012, x_1011) -> h_XCH x_1012 x_10112314 | XCHD (x_1 014, x_1013) -> h_XCHD x_1014 x_10132286 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2287 let rec preinstruction_rect_Type3 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2288 | ADD (x_19633, x_19632) -> h_ADD x_19633 x_19632 2289 | ADDC (x_19635, x_19634) -> h_ADDC x_19635 x_19634 2290 | SUBB (x_19637, x_19636) -> h_SUBB x_19637 x_19636 2291 | INC x_19638 -> h_INC x_19638 2292 | DEC x_19639 -> h_DEC x_19639 2293 | MUL (x_19641, x_19640) -> h_MUL x_19641 x_19640 2294 | DIV (x_19643, x_19642) -> h_DIV x_19643 x_19642 2295 | DA x_19644 -> h_DA x_19644 2296 | JC x_19645 -> h_JC x_19645 2297 | JNC x_19646 -> h_JNC x_19646 2298 | JB (x_19648, x_19647) -> h_JB x_19648 x_19647 2299 | JNB (x_19650, x_19649) -> h_JNB x_19650 x_19649 2300 | JBC (x_19652, x_19651) -> h_JBC x_19652 x_19651 2301 | JZ x_19653 -> h_JZ x_19653 2302 | JNZ x_19654 -> h_JNZ x_19654 2303 | CJNE (x_19656, x_19655) -> h_CJNE x_19656 x_19655 2304 | DJNZ (x_19658, x_19657) -> h_DJNZ x_19658 x_19657 2305 | ANL x_19659 -> h_ANL x_19659 2306 | ORL x_19660 -> h_ORL x_19660 2307 | XRL x_19661 -> h_XRL x_19661 2308 | CLR x_19662 -> h_CLR x_19662 2309 | CPL x_19663 -> h_CPL x_19663 2310 | RL x_19664 -> h_RL x_19664 2311 | RLC x_19665 -> h_RLC x_19665 2312 | RR x_19666 -> h_RR x_19666 2313 | RRC x_19667 -> h_RRC x_19667 2314 | SWAP x_19668 -> h_SWAP x_19668 2315 | MOV x_19669 -> h_MOV x_19669 2316 | MOVX x_19670 -> h_MOVX x_19670 2317 | SETB x_19671 -> h_SETB x_19671 2318 | PUSH x_19672 -> h_PUSH x_19672 2319 | POP x_19673 -> h_POP x_19673 2320 | XCH (x_19675, x_19674) -> h_XCH x_19675 x_19674 2321 | XCHD (x_19677, x_19676) -> h_XCHD x_19677 x_19676 2315 2322 | RET -> h_RET 2316 2323 | RETI -> h_RETI 2317 2324 | NOP -> h_NOP 2325 | JMP x_19678 -> h_JMP x_19678 2318 2326 2319 2327 (** val preinstruction_rect_Type2 : … … 2351 2359 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2352 2360 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2353 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2354 let rec preinstruction_rect_Type2 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2355 | ADD (x_1 054, x_1053) -> h_ADD x_1054 x_10532356 | ADDC (x_1 056, x_1055) -> h_ADDC x_1056 x_10552357 | SUBB (x_1 058, x_1057) -> h_SUBB x_1058 x_10572358 | INC x_1 059 -> h_INC x_10592359 | DEC x_1 060 -> h_DEC x_10602360 | MUL (x_1 062, x_1061) -> h_MUL x_1062 x_10612361 | DIV (x_1 064, x_1063) -> h_DIV x_1064 x_10632362 | DA x_1 065 -> h_DA x_10652363 | JC x_1 066 -> h_JC x_10662364 | JNC x_1 067 -> h_JNC x_10672365 | JB (x_1 069, x_1068) -> h_JB x_1069 x_10682366 | JNB (x_1 071, x_1070) -> h_JNB x_1071 x_10702367 | JBC (x_1 073, x_1072) -> h_JBC x_1073 x_10722368 | JZ x_1 074 -> h_JZ x_10742369 | JNZ x_1 075 -> h_JNZ x_10752370 | CJNE (x_1 077, x_1076) -> h_CJNE x_1077 x_10762371 | DJNZ (x_1 079, x_1078) -> h_DJNZ x_1079 x_10782372 | ANL x_1 080 -> h_ANL x_10802373 | ORL x_1 081 -> h_ORL x_10812374 | XRL x_1 082 -> h_XRL x_10822375 | CLR x_1 083 -> h_CLR x_10832376 | CPL x_1 084 -> h_CPL x_10842377 | RL x_1 085 -> h_RL x_10852378 | RLC x_1 086 -> h_RLC x_10862379 | RR x_1 087 -> h_RR x_10872380 | RRC x_1 088 -> h_RRC x_10882381 | SWAP x_1 089 -> h_SWAP x_10892382 | MOV x_1 090 -> h_MOV x_10902383 | MOVX x_1 091 -> h_MOVX x_10912384 | SETB x_1 092 -> h_SETB x_10922385 | PUSH x_1 093 -> h_PUSH x_10932386 | POP x_1 094 -> h_POP x_10942387 | XCH (x_1 096, x_1095) -> h_XCH x_1096 x_10952388 | XCHD (x_1 098, x_1097) -> h_XCHD x_1098 x_10972361 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2362 let rec preinstruction_rect_Type2 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2363 | ADD (x_19719, x_19718) -> h_ADD x_19719 x_19718 2364 | ADDC (x_19721, x_19720) -> h_ADDC x_19721 x_19720 2365 | SUBB (x_19723, x_19722) -> h_SUBB x_19723 x_19722 2366 | INC x_19724 -> h_INC x_19724 2367 | DEC x_19725 -> h_DEC x_19725 2368 | MUL (x_19727, x_19726) -> h_MUL x_19727 x_19726 2369 | DIV (x_19729, x_19728) -> h_DIV x_19729 x_19728 2370 | DA x_19730 -> h_DA x_19730 2371 | JC x_19731 -> h_JC x_19731 2372 | JNC x_19732 -> h_JNC x_19732 2373 | JB (x_19734, x_19733) -> h_JB x_19734 x_19733 2374 | JNB (x_19736, x_19735) -> h_JNB x_19736 x_19735 2375 | JBC (x_19738, x_19737) -> h_JBC x_19738 x_19737 2376 | JZ x_19739 -> h_JZ x_19739 2377 | JNZ x_19740 -> h_JNZ x_19740 2378 | CJNE (x_19742, x_19741) -> h_CJNE x_19742 x_19741 2379 | DJNZ (x_19744, x_19743) -> h_DJNZ x_19744 x_19743 2380 | ANL x_19745 -> h_ANL x_19745 2381 | ORL x_19746 -> h_ORL x_19746 2382 | XRL x_19747 -> h_XRL x_19747 2383 | CLR x_19748 -> h_CLR x_19748 2384 | CPL x_19749 -> h_CPL x_19749 2385 | RL x_19750 -> h_RL x_19750 2386 | RLC x_19751 -> h_RLC x_19751 2387 | RR x_19752 -> h_RR x_19752 2388 | RRC x_19753 -> h_RRC x_19753 2389 | SWAP x_19754 -> h_SWAP x_19754 2390 | MOV x_19755 -> h_MOV x_19755 2391 | MOVX x_19756 -> h_MOVX x_19756 2392 | SETB x_19757 -> h_SETB x_19757 2393 | PUSH x_19758 -> h_PUSH x_19758 2394 | POP x_19759 -> h_POP x_19759 2395 | XCH (x_19761, x_19760) -> h_XCH x_19761 x_19760 2396 | XCHD (x_19763, x_19762) -> h_XCHD x_19763 x_19762 2389 2397 | RET -> h_RET 2390 2398 | RETI -> h_RETI 2391 2399 | NOP -> h_NOP 2400 | JMP x_19764 -> h_JMP x_19764 2392 2401 2393 2402 (** val preinstruction_rect_Type1 : … … 2425 2434 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2426 2435 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2427 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2428 let rec preinstruction_rect_Type1 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2429 | ADD (x_1 138, x_1137) -> h_ADD x_1138 x_11372430 | ADDC (x_1 140, x_1139) -> h_ADDC x_1140 x_11392431 | SUBB (x_1 142, x_1141) -> h_SUBB x_1142 x_11412432 | INC x_1 143 -> h_INC x_11432433 | DEC x_1 144 -> h_DEC x_11442434 | MUL (x_1 146, x_1145) -> h_MUL x_1146 x_11452435 | DIV (x_1 148, x_1147) -> h_DIV x_1148 x_11472436 | DA x_1 149 -> h_DA x_11492437 | JC x_1 150 -> h_JC x_11502438 | JNC x_1 151 -> h_JNC x_11512439 | JB (x_1 153, x_1152) -> h_JB x_1153 x_11522440 | JNB (x_1 155, x_1154) -> h_JNB x_1155 x_11542441 | JBC (x_1 157, x_1156) -> h_JBC x_1157 x_11562442 | JZ x_1 158 -> h_JZ x_11582443 | JNZ x_1 159 -> h_JNZ x_11592444 | CJNE (x_1 161, x_1160) -> h_CJNE x_1161 x_11602445 | DJNZ (x_1 163, x_1162) -> h_DJNZ x_1163 x_11622446 | ANL x_1 164 -> h_ANL x_11642447 | ORL x_1 165 -> h_ORL x_11652448 | XRL x_1 166 -> h_XRL x_11662449 | CLR x_1 167 -> h_CLR x_11672450 | CPL x_1 168 -> h_CPL x_11682451 | RL x_1 169 -> h_RL x_11692452 | RLC x_1 170 -> h_RLC x_11702453 | RR x_1 171 -> h_RR x_11712454 | RRC x_1 172 -> h_RRC x_11722455 | SWAP x_1 173 -> h_SWAP x_11732456 | MOV x_1 174 -> h_MOV x_11742457 | MOVX x_1 175 -> h_MOVX x_11752458 | SETB x_1 176 -> h_SETB x_11762459 | PUSH x_1 177 -> h_PUSH x_11772460 | POP x_1 178 -> h_POP x_11782461 | XCH (x_1 180, x_1179) -> h_XCH x_1180 x_11792462 | XCHD (x_1 182, x_1181) -> h_XCHD x_1182 x_11812436 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2437 let rec preinstruction_rect_Type1 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2438 | ADD (x_19805, x_19804) -> h_ADD x_19805 x_19804 2439 | ADDC (x_19807, x_19806) -> h_ADDC x_19807 x_19806 2440 | SUBB (x_19809, x_19808) -> h_SUBB x_19809 x_19808 2441 | INC x_19810 -> h_INC x_19810 2442 | DEC x_19811 -> h_DEC x_19811 2443 | MUL (x_19813, x_19812) -> h_MUL x_19813 x_19812 2444 | DIV (x_19815, x_19814) -> h_DIV x_19815 x_19814 2445 | DA x_19816 -> h_DA x_19816 2446 | JC x_19817 -> h_JC x_19817 2447 | JNC x_19818 -> h_JNC x_19818 2448 | JB (x_19820, x_19819) -> h_JB x_19820 x_19819 2449 | JNB (x_19822, x_19821) -> h_JNB x_19822 x_19821 2450 | JBC (x_19824, x_19823) -> h_JBC x_19824 x_19823 2451 | JZ x_19825 -> h_JZ x_19825 2452 | JNZ x_19826 -> h_JNZ x_19826 2453 | CJNE (x_19828, x_19827) -> h_CJNE x_19828 x_19827 2454 | DJNZ (x_19830, x_19829) -> h_DJNZ x_19830 x_19829 2455 | ANL x_19831 -> h_ANL x_19831 2456 | ORL x_19832 -> h_ORL x_19832 2457 | XRL x_19833 -> h_XRL x_19833 2458 | CLR x_19834 -> h_CLR x_19834 2459 | CPL x_19835 -> h_CPL x_19835 2460 | RL x_19836 -> h_RL x_19836 2461 | RLC x_19837 -> h_RLC x_19837 2462 | RR x_19838 -> h_RR x_19838 2463 | RRC x_19839 -> h_RRC x_19839 2464 | SWAP x_19840 -> h_SWAP x_19840 2465 | MOV x_19841 -> h_MOV x_19841 2466 | MOVX x_19842 -> h_MOVX x_19842 2467 | SETB x_19843 -> h_SETB x_19843 2468 | PUSH x_19844 -> h_PUSH x_19844 2469 | POP x_19845 -> h_POP x_19845 2470 | XCH (x_19847, x_19846) -> h_XCH x_19847 x_19846 2471 | XCHD (x_19849, x_19848) -> h_XCHD x_19849 x_19848 2463 2472 | RET -> h_RET 2464 2473 | RETI -> h_RETI 2465 2474 | NOP -> h_NOP 2475 | JMP x_19850 -> h_JMP x_19850 2466 2476 2467 2477 (** val preinstruction_rect_Type0 : … … 2499 2509 (subaddressing_mode -> 'a2) -> (subaddressing_mode -> subaddressing_mode 2500 2510 -> 'a2) -> (subaddressing_mode -> subaddressing_mode -> 'a2) -> 'a2 -> 2501 'a2 -> 'a2 -> 'a1 preinstruction -> 'a2 **)2502 let rec preinstruction_rect_Type0 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP = function2503 | ADD (x_1 222, x_1221) -> h_ADD x_1222 x_12212504 | ADDC (x_1 224, x_1223) -> h_ADDC x_1224 x_12232505 | SUBB (x_1 226, x_1225) -> h_SUBB x_1226 x_12252506 | INC x_1 227 -> h_INC x_12272507 | DEC x_1 228 -> h_DEC x_12282508 | MUL (x_1 230, x_1229) -> h_MUL x_1230 x_12292509 | DIV (x_1 232, x_1231) -> h_DIV x_1232 x_12312510 | DA x_1 233 -> h_DA x_12332511 | JC x_1 234 -> h_JC x_12342512 | JNC x_1 235 -> h_JNC x_12352513 | JB (x_1 237, x_1236) -> h_JB x_1237 x_12362514 | JNB (x_1 239, x_1238) -> h_JNB x_1239 x_12382515 | JBC (x_1 241, x_1240) -> h_JBC x_1241 x_12402516 | JZ x_1 242 -> h_JZ x_12422517 | JNZ x_1 243 -> h_JNZ x_12432518 | CJNE (x_1 245, x_1244) -> h_CJNE x_1245 x_12442519 | DJNZ (x_1 247, x_1246) -> h_DJNZ x_1247 x_12462520 | ANL x_1 248 -> h_ANL x_12482521 | ORL x_1 249 -> h_ORL x_12492522 | XRL x_1 250 -> h_XRL x_12502523 | CLR x_1 251 -> h_CLR x_12512524 | CPL x_1 252 -> h_CPL x_12522525 | RL x_1 253 -> h_RL x_12532526 | RLC x_1 254 -> h_RLC x_12542527 | RR x_1 255 -> h_RR x_12552528 | RRC x_1 256 -> h_RRC x_12562529 | SWAP x_1 257 -> h_SWAP x_12572530 | MOV x_1 258 -> h_MOV x_12582531 | MOVX x_1 259 -> h_MOVX x_12592532 | SETB x_1 260 -> h_SETB x_12602533 | PUSH x_1 261 -> h_PUSH x_12612534 | POP x_1 262 -> h_POP x_12622535 | XCH (x_1 264, x_1263) -> h_XCH x_1264 x_12632536 | XCHD (x_1 266, x_1265) -> h_XCHD x_1266 x_12652511 'a2 -> 'a2 -> (subaddressing_mode -> 'a2) -> 'a1 preinstruction -> 'a2 **) 2512 let rec preinstruction_rect_Type0 h_ADD h_ADDC h_SUBB h_INC h_DEC h_MUL h_DIV h_DA h_JC h_JNC h_JB h_JNB h_JBC h_JZ h_JNZ h_CJNE h_DJNZ h_ANL h_ORL h_XRL h_CLR h_CPL h_RL h_RLC h_RR h_RRC h_SWAP h_MOV h_MOVX h_SETB h_PUSH h_POP h_XCH h_XCHD h_RET h_RETI h_NOP h_JMP = function 2513 | ADD (x_19891, x_19890) -> h_ADD x_19891 x_19890 2514 | ADDC (x_19893, x_19892) -> h_ADDC x_19893 x_19892 2515 | SUBB (x_19895, x_19894) -> h_SUBB x_19895 x_19894 2516 | INC x_19896 -> h_INC x_19896 2517 | DEC x_19897 -> h_DEC x_19897 2518 | MUL (x_19899, x_19898) -> h_MUL x_19899 x_19898 2519 | DIV (x_19901, x_19900) -> h_DIV x_19901 x_19900 2520 | DA x_19902 -> h_DA x_19902 2521 | JC x_19903 -> h_JC x_19903 2522 | JNC x_19904 -> h_JNC x_19904 2523 | JB (x_19906, x_19905) -> h_JB x_19906 x_19905 2524 | JNB (x_19908, x_19907) -> h_JNB x_19908 x_19907 2525 | JBC (x_19910, x_19909) -> h_JBC x_19910 x_19909 2526 | JZ x_19911 -> h_JZ x_19911 2527 | JNZ x_19912 -> h_JNZ x_19912 2528 | CJNE (x_19914, x_19913) -> h_CJNE x_19914 x_19913 2529 | DJNZ (x_19916, x_19915) -> h_DJNZ x_19916 x_19915 2530 | ANL x_19917 -> h_ANL x_19917 2531 | ORL x_19918 -> h_ORL x_19918 2532 | XRL x_19919 -> h_XRL x_19919 2533 | CLR x_19920 -> h_CLR x_19920 2534 | CPL x_19921 -> h_CPL x_19921 2535 | RL x_19922 -> h_RL x_19922 2536 | RLC x_19923 -> h_RLC x_19923 2537 | RR x_19924 -> h_RR x_19924 2538 | RRC x_19925 -> h_RRC x_19925 2539 | SWAP x_19926 -> h_SWAP x_19926 2540 | MOV x_19927 -> h_MOV x_19927 2541 | MOVX x_19928 -> h_MOVX x_19928 2542 | SETB x_19929 -> h_SETB x_19929 2543 | PUSH x_19930 -> h_PUSH x_19930 2544 | POP x_19931 -> h_POP x_19931 2545 | XCH (x_19933, x_19932) -> h_XCH x_19933 x_19932 2546 | XCHD (x_19935, x_19934) -> h_XCHD x_19935 x_19934 2537 2547 | RET -> h_RET 2538 2548 | RETI -> h_RETI 2539 2549 | NOP -> h_NOP 2550 | JMP x_19936 -> h_JMP x_19936 2540 2551 2541 2552 (** val preinstruction_inv_rect_Type4 : … … 2575 2586 -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> 2576 2587 (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> 2577 (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)2578 let preinstruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =2588 (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **) 2589 let preinstruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 = 2579 2590 let hcut = 2580 2591 preinstruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 2581 2592 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 2582 h33 h34 h35 h36 h37 h term2593 h33 h34 h35 h36 h37 h38 hterm 2583 2594 in 2584 2595 hcut __ … … 2620 2631 -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> 2621 2632 (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> 2622 (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)2623 let preinstruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =2633 (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **) 2634 let preinstruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 = 2624 2635 let hcut = 2625 2636 preinstruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 2626 2637 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 2627 h33 h34 h35 h36 h37 h term2638 h33 h34 h35 h36 h37 h38 hterm 2628 2639 in 2629 2640 hcut __ … … 2665 2676 -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> 2666 2677 (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> 2667 (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)2668 let preinstruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =2678 (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **) 2679 let preinstruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 = 2669 2680 let hcut = 2670 2681 preinstruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 2671 2682 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 2672 h33 h34 h35 h36 h37 h term2683 h33 h34 h35 h36 h37 h38 hterm 2673 2684 in 2674 2685 hcut __ … … 2710 2721 -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> 2711 2722 (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> 2712 (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)2713 let preinstruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =2723 (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **) 2724 let preinstruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 = 2714 2725 let hcut = 2715 2726 preinstruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 2716 2727 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 2717 h33 h34 h35 h36 h37 h term2728 h33 h34 h35 h36 h37 h38 hterm 2718 2729 in 2719 2730 hcut __ … … 2755 2766 -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> 2756 2767 (subaddressing_mode -> subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> 2757 (__ -> 'a2) -> (__ -> 'a2) -> 'a2 **)2758 let preinstruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 =2768 (__ -> 'a2) -> (__ -> 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 **) 2769 let preinstruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 h33 h34 h35 h36 h37 h38 = 2759 2770 let hcut = 2760 2771 preinstruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11 h12 h13 h14 2761 2772 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24 h25 h26 h27 h28 h29 h30 h31 h32 2762 h33 h34 h35 h36 h37 h term2773 h33 h34 h35 h36 h37 h38 hterm 2763 2774 in 2764 2775 hcut __ … … 2805 2816 | RET -> Obj.magic (fun _ dH -> dH) 2806 2817 | RETI -> Obj.magic (fun _ dH -> dH) 2807 | NOP -> Obj.magic (fun _ dH -> dH)) y 2818 | NOP -> Obj.magic (fun _ dH -> dH) 2819 | JMP a0 -> Obj.magic (fun _ dH -> dH __)) y 2808 2820 2809 2821 (** val preinstruction_jmdiscr : … … 2848 2860 | RET -> Obj.magic (fun _ dH -> dH) 2849 2861 | RETI -> Obj.magic (fun _ dH -> dH) 2850 | NOP -> Obj.magic (fun _ dH -> dH)) y 2862 | NOP -> Obj.magic (fun _ dH -> dH) 2863 | JMP a0 -> Obj.magic (fun _ dH -> dH __)) y 2851 2864 2852 2865 (** val eq_preinstruction : … … 2908 2921 | RET -> Bool.False 2909 2922 | RETI -> Bool.False 2910 | NOP -> Bool.False) 2923 | NOP -> Bool.False 2924 | JMP x -> Bool.False) 2911 2925 | ADDC (arg1, arg2) -> 2912 2926 (match j with … … 2962 2976 | RET -> Bool.False 2963 2977 | RETI -> Bool.False 2964 | NOP -> Bool.False) 2978 | NOP -> Bool.False 2979 | JMP x -> Bool.False) 2965 2980 | SUBB (arg1, arg2) -> 2966 2981 (match j with … … 3016 3031 | RET -> Bool.False 3017 3032 | RETI -> Bool.False 3018 | NOP -> Bool.False) 3033 | NOP -> Bool.False 3034 | JMP x -> Bool.False) 3019 3035 | INC arg -> 3020 3036 (match j with … … 3068 3084 | RET -> Bool.False 3069 3085 | RETI -> Bool.False 3070 | NOP -> Bool.False) 3086 | NOP -> Bool.False 3087 | JMP x -> Bool.False) 3071 3088 | DEC arg -> 3072 3089 (match j with … … 3116 3133 | RET -> Bool.False 3117 3134 | RETI -> Bool.False 3118 | NOP -> Bool.False) 3135 | NOP -> Bool.False 3136 | JMP x -> Bool.False) 3119 3137 | MUL (arg1, arg2) -> 3120 3138 (match j with … … 3166 3184 | RET -> Bool.False 3167 3185 | RETI -> Bool.False 3168 | NOP -> Bool.False) 3186 | NOP -> Bool.False 3187 | JMP x -> Bool.False) 3169 3188 | DIV (arg1, arg2) -> 3170 3189 (match j with … … 3216 3235 | RET -> Bool.False 3217 3236 | RETI -> Bool.False 3218 | NOP -> Bool.False) 3237 | NOP -> Bool.False 3238 | JMP x -> Bool.False) 3219 3239 | DA arg -> 3220 3240 (match j with … … 3260 3280 | RET -> Bool.False 3261 3281 | RETI -> Bool.False 3262 | NOP -> Bool.False) 3282 | NOP -> Bool.False 3283 | JMP x -> Bool.False) 3263 3284 | JC arg -> 3264 3285 (match j with … … 3304 3325 | RET -> Bool.False 3305 3326 | RETI -> Bool.False 3306 | NOP -> Bool.False) 3327 | NOP -> Bool.False 3328 | JMP x -> Bool.False) 3307 3329 | JNC arg -> 3308 3330 (match j with … … 3348 3370 | RET -> Bool.False 3349 3371 | RETI -> Bool.False 3350 | NOP -> Bool.False) 3372 | NOP -> Bool.False 3373 | JMP x -> Bool.False) 3351 3374 | JB (arg1, arg2) -> 3352 3375 (match j with … … 3398 3421 | RET -> Bool.False 3399 3422 | RETI -> Bool.False 3400 | NOP -> Bool.False) 3423 | NOP -> Bool.False 3424 | JMP x -> Bool.False) 3401 3425 | JNB (arg1, arg2) -> 3402 3426 (match j with … … 3448 3472 | RET -> Bool.False 3449 3473 | RETI -> Bool.False 3450 | NOP -> Bool.False) 3474 | NOP -> Bool.False 3475 | JMP x -> Bool.False) 3451 3476 | JBC (arg1, arg2) -> 3452 3477 (match j with … … 3498 3523 | RET -> Bool.False 3499 3524 | RETI -> Bool.False 3500 | NOP -> Bool.False) 3525 | NOP -> Bool.False 3526 | JMP x -> Bool.False) 3501 3527 | JZ arg -> 3502 3528 (match j with … … 3542 3568 | RET -> Bool.False 3543 3569 | RETI -> Bool.False 3544 | NOP -> Bool.False) 3570 | NOP -> Bool.False 3571 | JMP x -> Bool.False) 3545 3572 | JNZ arg -> 3546 3573 (match j with … … 3586 3613 | RET -> Bool.False 3587 3614 | RETI -> Bool.False 3588 | NOP -> Bool.False) 3615 | NOP -> Bool.False 3616 | JMP x -> Bool.False) 3589 3617 | CJNE (arg1, arg2) -> 3590 3618 (match j with … … 3662 3690 | RET -> Bool.False 3663 3691 | RETI -> Bool.False 3664 | NOP -> Bool.False) 3692 | NOP -> Bool.False 3693 | JMP x -> Bool.False) 3665 3694 | DJNZ (arg1, arg2) -> 3666 3695 (match j with … … 3712 3741 | RET -> Bool.False 3713 3742 | RETI -> Bool.False 3714 | NOP -> Bool.False) 3743 | NOP -> Bool.False 3744 | JMP x -> Bool.False) 3715 3745 | ANL arg -> 3716 3746 (match j with … … 3802 3832 | RET -> Bool.False 3803 3833 | RETI -> Bool.False 3804 | NOP -> Bool.False) 3834 | NOP -> Bool.False 3835 | JMP x -> Bool.False) 3805 3836 | ORL arg -> 3806 3837 (match j with … … 3892 3923 | RET -> Bool.False 3893 3924 | RETI -> Bool.False 3894 | NOP -> Bool.False) 3925 | NOP -> Bool.False 3926 | JMP x -> Bool.False) 3895 3927 | XRL arg -> 3896 3928 (match j with … … 3966 3998 | RET -> Bool.False 3967 3999 | RETI -> Bool.False 3968 | NOP -> Bool.False) 4000 | NOP -> Bool.False 4001 | JMP x -> Bool.False) 3969 4002 | CLR arg -> 3970 4003 (match j with … … 4012 4045 | RET -> Bool.False 4013 4046 | RETI -> Bool.False 4014 | NOP -> Bool.False) 4047 | NOP -> Bool.False 4048 | JMP x -> Bool.False) 4015 4049 | CPL arg -> 4016 4050 (match j with … … 4058 4092 | RET -> Bool.False 4059 4093 | RETI -> Bool.False 4060 | NOP -> Bool.False) 4094 | NOP -> Bool.False 4095 | JMP x -> Bool.False) 4061 4096 | RL arg -> 4062 4097 (match j with … … 4102 4137 | RET -> Bool.False 4103 4138 | RETI -> Bool.False 4104 | NOP -> Bool.False) 4139 | NOP -> Bool.False 4140 | JMP x -> Bool.False) 4105 4141 | RLC arg -> 4106 4142 (match j with … … 4146 4182 | RET -> Bool.False 4147 4183 | RETI -> Bool.False 4148 | NOP -> Bool.False) 4184 | NOP -> Bool.False 4185 | JMP x -> Bool.False) 4149 4186 | RR arg -> 4150 4187 (match j with … … 4190 4227 | RET -> Bool.False 4191 4228 | RETI -> Bool.False 4192 | NOP -> Bool.False) 4229 | NOP -> Bool.False 4230 | JMP x -> Bool.False) 4193 4231 | RRC arg -> 4194 4232 (match j with … … 4234 4272 | RET -> Bool.False 4235 4273 | RETI -> Bool.False 4236 | NOP -> Bool.False) 4274 | NOP -> Bool.False 4275 | JMP x -> Bool.False) 4237 4276 | SWAP arg -> 4238 4277 (match j with … … 4278 4317 | RET -> Bool.False 4279 4318 | RETI -> Bool.False 4280 | NOP -> Bool.False) 4319 | NOP -> Bool.False 4320 | JMP x -> Bool.False) 4281 4321 | MOV arg -> 4282 4322 (match j with … … 4418 4458 | RET -> Bool.False 4419 4459 | RETI -> Bool.False 4420 | NOP -> Bool.False) 4460 | NOP -> Bool.False 4461 | JMP x -> Bool.False) 4421 4462 | MOVX arg -> 4422 4463 (match j with … … 4488 4529 | RET -> Bool.False 4489 4530 | RETI -> Bool.False 4490 | NOP -> Bool.False) 4531 | NOP -> Bool.False 4532 | JMP x -> Bool.False) 4491 4533 | SETB arg -> 4492 4534 (match j with … … 4532 4574 | RET -> Bool.False 4533 4575 | RETI -> Bool.False 4534 | NOP -> Bool.False) 4576 | NOP -> Bool.False 4577 | JMP x -> Bool.False) 4535 4578 | PUSH arg -> 4536 4579 (match j with … … 4576 4619 | RET -> Bool.False 4577 4620 | RETI -> Bool.False 4578 | NOP -> Bool.False) 4621 | NOP -> Bool.False 4622 | JMP x -> Bool.False) 4579 4623 | POP arg -> 4580 4624 (match j with … … 4620 4664 | RET -> Bool.False 4621 4665 | RETI -> Bool.False 4622 | NOP -> Bool.False) 4666 | NOP -> Bool.False 4667 | JMP x -> Bool.False) 4623 4668 | XCH (arg1, arg2) -> 4624 4669 (match j with … … 4672 4717 | RET -> Bool.False 4673 4718 | RETI -> Bool.False 4674 | NOP -> Bool.False) 4719 | NOP -> Bool.False 4720 | JMP x -> Bool.False) 4675 4721 | XCHD (arg1, arg2) -> 4676 4722 (match j with … … 4722 4768 | RET -> Bool.False 4723 4769 | RETI -> Bool.False 4724 | NOP -> Bool.False) 4770 | NOP -> Bool.False 4771 | JMP x -> Bool.False) 4725 4772 | RET -> 4726 4773 (match j with … … 4761 4808 | RET -> Bool.True 4762 4809 | RETI -> Bool.False 4763 | NOP -> Bool.False) 4810 | NOP -> Bool.False 4811 | JMP x -> Bool.False) 4764 4812 | RETI -> 4765 4813 (match j with … … 4800 4848 | RET -> Bool.False 4801 4849 | RETI -> Bool.True 4802 | NOP -> Bool.False) 4850 | NOP -> Bool.False 4851 | JMP x -> Bool.False) 4803 4852 | NOP -> 4804 4853 (match j with … … 4839 4888 | RET -> Bool.False 4840 4889 | RETI -> Bool.False 4841 | NOP -> Bool.True) 4890 | NOP -> Bool.True 4891 | JMP x -> Bool.False) 4892 | JMP arg -> 4893 (match j with 4894 | ADD (x, x0) -> Bool.False 4895 | ADDC (x, x0) -> Bool.False 4896 | SUBB (x, x0) -> Bool.False 4897 | INC x -> Bool.False 4898 | DEC x -> Bool.False 4899 | MUL (x, x0) -> Bool.False 4900 | DIV (x, x0) -> Bool.False 4901 | DA x -> Bool.False 4902 | JC x -> Bool.False 4903 | JNC x -> Bool.False 4904 | JB (x, x0) -> Bool.False 4905 | JNB (x, x0) -> Bool.False 4906 | JBC (x, x0) -> Bool.False 4907 | JZ x -> Bool.False 4908 | JNZ x -> Bool.False 4909 | CJNE (x, x0) -> Bool.False 4910 | DJNZ (x, x0) -> Bool.False 4911 | ANL x -> Bool.False 4912 | ORL x -> Bool.False 4913 | XRL x -> Bool.False 4914 | CLR x -> Bool.False 4915 | CPL x -> Bool.False 4916 | RL x -> Bool.False 4917 | RLC x -> Bool.False 4918 | RR x -> Bool.False 4919 | RRC x -> Bool.False 4920 | SWAP x -> Bool.False 4921 | MOV x -> Bool.False 4922 | MOVX x -> Bool.False 4923 | SETB x -> Bool.False 4924 | PUSH x -> Bool.False 4925 | POP x -> Bool.False 4926 | XCH (x, x0) -> Bool.False 4927 | XCHD (x, x0) -> Bool.False 4928 | RET -> Bool.False 4929 | RETI -> Bool.False 4930 | NOP -> Bool.False 4931 | JMP arg' -> 4932 eq_addressing_mode 4933 (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr, 4934 Vector.VEmpty)) arg) 4935 (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr, 4936 Vector.VEmpty)) arg')) 4842 4937 4843 4938 type instruction = … … 4847 4942 | LJMP of subaddressing_mode 4848 4943 | SJMP of subaddressing_mode 4849 | JMP of subaddressing_mode4850 4944 | MOVC of subaddressing_mode * subaddressing_mode 4851 4945 | RealInstruction of subaddressing_mode preinstruction … … 4854 4948 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4855 4949 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4856 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4857 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4858 preinstruction -> 'a1) -> instruction -> 'a1 **) 4859 let rec instruction_rect_Type4 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4860 | ACALL x_1827 -> h_ACALL x_1827 4861 | LCALL x_1828 -> h_LCALL x_1828 4862 | AJMP x_1829 -> h_AJMP x_1829 4863 | LJMP x_1830 -> h_LJMP x_1830 4864 | SJMP x_1831 -> h_SJMP x_1831 4865 | JMP x_1832 -> h_JMP x_1832 4866 | MOVC (x_1834, x_1833) -> h_MOVC x_1834 x_1833 4867 | RealInstruction x_1835 -> h_RealInstruction x_1835 4950 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 4951 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 4952 'a1 **) 4953 let rec instruction_rect_Type4 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 4954 | ACALL x_20508 -> h_ACALL x_20508 4955 | LCALL x_20509 -> h_LCALL x_20509 4956 | AJMP x_20510 -> h_AJMP x_20510 4957 | LJMP x_20511 -> h_LJMP x_20511 4958 | SJMP x_20512 -> h_SJMP x_20512 4959 | MOVC (x_20514, x_20513) -> h_MOVC x_20514 x_20513 4960 | RealInstruction x_20515 -> h_RealInstruction x_20515 4868 4961 4869 4962 (** val instruction_rect_Type5 : 4870 4963 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4871 4964 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4872 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4873 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4874 preinstruction -> 'a1) -> instruction -> 'a1 **) 4875 let rec instruction_rect_Type5 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4876 | ACALL x_1845 -> h_ACALL x_1845 4877 | LCALL x_1846 -> h_LCALL x_1846 4878 | AJMP x_1847 -> h_AJMP x_1847 4879 | LJMP x_1848 -> h_LJMP x_1848 4880 | SJMP x_1849 -> h_SJMP x_1849 4881 | JMP x_1850 -> h_JMP x_1850 4882 | MOVC (x_1852, x_1851) -> h_MOVC x_1852 x_1851 4883 | RealInstruction x_1853 -> h_RealInstruction x_1853 4965 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 4966 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 4967 'a1 **) 4968 let rec instruction_rect_Type5 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 4969 | ACALL x_20524 -> h_ACALL x_20524 4970 | LCALL x_20525 -> h_LCALL x_20525 4971 | AJMP x_20526 -> h_AJMP x_20526 4972 | LJMP x_20527 -> h_LJMP x_20527 4973 | SJMP x_20528 -> h_SJMP x_20528 4974 | MOVC (x_20530, x_20529) -> h_MOVC x_20530 x_20529 4975 | RealInstruction x_20531 -> h_RealInstruction x_20531 4884 4976 4885 4977 (** val instruction_rect_Type3 : 4886 4978 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4887 4979 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4888 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4889 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4890 preinstruction -> 'a1) -> instruction -> 'a1 **) 4891 let rec instruction_rect_Type3 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4892 | ACALL x_1863 -> h_ACALL x_1863 4893 | LCALL x_1864 -> h_LCALL x_1864 4894 | AJMP x_1865 -> h_AJMP x_1865 4895 | LJMP x_1866 -> h_LJMP x_1866 4896 | SJMP x_1867 -> h_SJMP x_1867 4897 | JMP x_1868 -> h_JMP x_1868 4898 | MOVC (x_1870, x_1869) -> h_MOVC x_1870 x_1869 4899 | RealInstruction x_1871 -> h_RealInstruction x_1871 4980 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 4981 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 4982 'a1 **) 4983 let rec instruction_rect_Type3 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 4984 | ACALL x_20540 -> h_ACALL x_20540 4985 | LCALL x_20541 -> h_LCALL x_20541 4986 | AJMP x_20542 -> h_AJMP x_20542 4987 | LJMP x_20543 -> h_LJMP x_20543 4988 | SJMP x_20544 -> h_SJMP x_20544 4989 | MOVC (x_20546, x_20545) -> h_MOVC x_20546 x_20545 4990 | RealInstruction x_20547 -> h_RealInstruction x_20547 4900 4991 4901 4992 (** val instruction_rect_Type2 : 4902 4993 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4903 4994 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4904 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4905 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4906 preinstruction -> 'a1) -> instruction -> 'a1 **) 4907 let rec instruction_rect_Type2 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4908 | ACALL x_1881 -> h_ACALL x_1881 4909 | LCALL x_1882 -> h_LCALL x_1882 4910 | AJMP x_1883 -> h_AJMP x_1883 4911 | LJMP x_1884 -> h_LJMP x_1884 4912 | SJMP x_1885 -> h_SJMP x_1885 4913 | JMP x_1886 -> h_JMP x_1886 4914 | MOVC (x_1888, x_1887) -> h_MOVC x_1888 x_1887 4915 | RealInstruction x_1889 -> h_RealInstruction x_1889 4995 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 4996 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 4997 'a1 **) 4998 let rec instruction_rect_Type2 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 4999 | ACALL x_20556 -> h_ACALL x_20556 5000 | LCALL x_20557 -> h_LCALL x_20557 5001 | AJMP x_20558 -> h_AJMP x_20558 5002 | LJMP x_20559 -> h_LJMP x_20559 5003 | SJMP x_20560 -> h_SJMP x_20560 5004 | MOVC (x_20562, x_20561) -> h_MOVC x_20562 x_20561 5005 | RealInstruction x_20563 -> h_RealInstruction x_20563 4916 5006 4917 5007 (** val instruction_rect_Type1 : 4918 5008 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4919 5009 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4920 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4921 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4922 preinstruction -> 'a1) -> instruction -> 'a1 **) 4923 let rec instruction_rect_Type1 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4924 | ACALL x_1899 -> h_ACALL x_1899 4925 | LCALL x_1900 -> h_LCALL x_1900 4926 | AJMP x_1901 -> h_AJMP x_1901 4927 | LJMP x_1902 -> h_LJMP x_1902 4928 | SJMP x_1903 -> h_SJMP x_1903 4929 | JMP x_1904 -> h_JMP x_1904 4930 | MOVC (x_1906, x_1905) -> h_MOVC x_1906 x_1905 4931 | RealInstruction x_1907 -> h_RealInstruction x_1907 5010 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 5011 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 5012 'a1 **) 5013 let rec instruction_rect_Type1 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 5014 | ACALL x_20572 -> h_ACALL x_20572 5015 | LCALL x_20573 -> h_LCALL x_20573 5016 | AJMP x_20574 -> h_AJMP x_20574 5017 | LJMP x_20575 -> h_LJMP x_20575 5018 | SJMP x_20576 -> h_SJMP x_20576 5019 | MOVC (x_20578, x_20577) -> h_MOVC x_20578 x_20577 5020 | RealInstruction x_20579 -> h_RealInstruction x_20579 4932 5021 4933 5022 (** val instruction_rect_Type0 : 4934 5023 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4935 5024 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4936 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 4937 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 4938 preinstruction -> 'a1) -> instruction -> 'a1 **) 4939 let rec instruction_rect_Type0 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_JMP h_MOVC h_RealInstruction = function 4940 | ACALL x_1917 -> h_ACALL x_1917 4941 | LCALL x_1918 -> h_LCALL x_1918 4942 | AJMP x_1919 -> h_AJMP x_1919 4943 | LJMP x_1920 -> h_LJMP x_1920 4944 | SJMP x_1921 -> h_SJMP x_1921 4945 | JMP x_1922 -> h_JMP x_1922 4946 | MOVC (x_1924, x_1923) -> h_MOVC x_1924 x_1923 4947 | RealInstruction x_1925 -> h_RealInstruction x_1925 5025 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode 5026 -> 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 5027 'a1 **) 5028 let rec instruction_rect_Type0 h_ACALL h_LCALL h_AJMP h_LJMP h_SJMP h_MOVC h_RealInstruction = function 5029 | ACALL x_20588 -> h_ACALL x_20588 5030 | LCALL x_20589 -> h_LCALL x_20589 5031 | AJMP x_20590 -> h_AJMP x_20590 5032 | LJMP x_20591 -> h_LJMP x_20591 5033 | SJMP x_20592 -> h_SJMP x_20592 5034 | MOVC (x_20594, x_20593) -> h_MOVC x_20594 x_20593 5035 | RealInstruction x_20595 -> h_RealInstruction x_20595 4948 5036 4949 5037 (** val instruction_inv_rect_Type4 : … … 4951 5039 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4952 5040 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4953 -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)4954 -> (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1 **)4955 let instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8=4956 let hcut = instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h 8 hterm in hcut __5041 -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction 5042 -> __ -> 'a1) -> 'a1 **) 5043 let instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 = 5044 let hcut = instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __ 4957 5045 4958 5046 (** val instruction_inv_rect_Type3 : … … 4960 5048 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4961 5049 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4962 -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)4963 -> (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1 **)4964 let instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8=4965 let hcut = instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h 8 hterm in hcut __5050 -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction 5051 -> __ -> 'a1) -> 'a1 **) 5052 let instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 = 5053 let hcut = instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __ 4966 5054 4967 5055 (** val instruction_inv_rect_Type2 : … … 4969 5057 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4970 5058 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4971 -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)4972 -> (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1 **)4973 let instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8=4974 let hcut = instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h 8 hterm in hcut __5059 -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction 5060 -> __ -> 'a1) -> 'a1 **) 5061 let instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 = 5062 let hcut = instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __ 4975 5063 4976 5064 (** val instruction_inv_rect_Type1 : … … 4978 5066 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4979 5067 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4980 -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)4981 -> (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1 **)4982 let instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8=4983 let hcut = instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h 8 hterm in hcut __5068 -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction 5069 -> __ -> 'a1) -> 'a1 **) 5070 let instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 = 5071 let hcut = instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __ 4984 5072 4985 5073 (** val instruction_inv_rect_Type0 : … … 4987 5075 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4988 5076 -> __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode 4989 -> __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)4990 -> (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1 **)4991 let instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8=4992 let hcut = instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h 8 hterm in hcut __5077 -> subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction 5078 -> __ -> 'a1) -> 'a1 **) 5079 let instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 = 5080 let hcut = instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 hterm in hcut __ 4993 5081 4994 5082 (** val instruction_discr : instruction -> instruction -> __ **) … … 5001 5089 | LJMP a0 -> Obj.magic (fun _ dH -> dH __) 5002 5090 | SJMP a0 -> Obj.magic (fun _ dH -> dH __) 5003 | JMP a0 -> Obj.magic (fun _ dH -> dH __)5004 5091 | MOVC (a0, a1) -> Obj.magic (fun _ dH -> dH __ __) 5005 5092 | RealInstruction a0 -> Obj.magic (fun _ dH -> dH __)) y … … 5014 5101 | LJMP a0 -> Obj.magic (fun _ dH -> dH __) 5015 5102 | SJMP a0 -> Obj.magic (fun _ dH -> dH __) 5016 | JMP a0 -> Obj.magic (fun _ dH -> dH __)5017 5103 | MOVC (a0, a1) -> Obj.magic (fun _ dH -> dH __ __) 5018 5104 | RealInstruction a0 -> Obj.magic (fun _ dH -> dH __)) y … … 5033 5119 | LJMP x -> Bool.False 5034 5120 | SJMP x -> Bool.False 5035 | JMP x -> Bool.False5036 5121 | MOVC (x, x0) -> Bool.False 5037 5122 | RealInstruction x -> Bool.False) … … 5048 5133 | LJMP x -> Bool.False 5049 5134 | SJMP x -> Bool.False 5050 | JMP x -> Bool.False5051 5135 | MOVC (x, x0) -> Bool.False 5052 5136 | RealInstruction x -> Bool.False) … … 5063 5147 | LJMP x -> Bool.False 5064 5148 | SJMP x -> Bool.False 5065 | JMP x -> Bool.False5066 5149 | MOVC (x, x0) -> Bool.False 5067 5150 | RealInstruction x -> Bool.False) … … 5078 5161 Vector.VEmpty)) arg') 5079 5162 | SJMP x -> Bool.False 5080 | JMP x -> Bool.False5081 5163 | MOVC (x, x0) -> Bool.False 5082 5164 | RealInstruction x -> Bool.False) … … 5093 5175 (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Relative, 5094 5176 Vector.VEmpty)) arg') 5095 | JMP x -> Bool.False5096 | MOVC (x, x0) -> Bool.False5097 | RealInstruction x -> Bool.False)5098 | JMP arg ->5099 (match j with5100 | ACALL x -> Bool.False5101 | LCALL x -> Bool.False5102 | AJMP x -> Bool.False5103 | LJMP x -> Bool.False5104 | SJMP x -> Bool.False5105 | JMP arg' ->5106 eq_addressing_mode5107 (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,5108 Vector.VEmpty)) arg)5109 (subaddressing_modeel Nat.O (Vector.VCons (Nat.O, Indirect_dptr,5110 Vector.VEmpty)) arg')5111 5177 | MOVC (x, x0) -> Bool.False 5112 5178 | RealInstruction x -> Bool.False) … … 5118 5184 | LJMP x -> Bool.False 5119 5185 | SJMP x -> Bool.False 5120 | JMP x -> Bool.False5121 5186 | MOVC (arg1', arg2') -> 5122 5187 Bool.andb … … 5139 5204 | LJMP x -> Bool.False 5140 5205 | SJMP x -> Bool.False 5141 | JMP x -> Bool.False5142 5206 | MOVC (x, x0) -> Bool.False 5143 5207 | RealInstruction instr' -> eq_preinstruction instr instr') 5208 5209 type word_side = 5210 | HIGH 5211 | LOW 5212 5213 (** val word_side_rect_Type4 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5214 let rec word_side_rect_Type4 h_HIGH h_LOW = function 5215 | HIGH -> h_HIGH 5216 | LOW -> h_LOW 5217 5218 (** val word_side_rect_Type5 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5219 let rec word_side_rect_Type5 h_HIGH h_LOW = function 5220 | HIGH -> h_HIGH 5221 | LOW -> h_LOW 5222 5223 (** val word_side_rect_Type3 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5224 let rec word_side_rect_Type3 h_HIGH h_LOW = function 5225 | HIGH -> h_HIGH 5226 | LOW -> h_LOW 5227 5228 (** val word_side_rect_Type2 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5229 let rec word_side_rect_Type2 h_HIGH h_LOW = function 5230 | HIGH -> h_HIGH 5231 | LOW -> h_LOW 5232 5233 (** val word_side_rect_Type1 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5234 let rec word_side_rect_Type1 h_HIGH h_LOW = function 5235 | HIGH -> h_HIGH 5236 | LOW -> h_LOW 5237 5238 (** val word_side_rect_Type0 : 'a1 -> 'a1 -> word_side -> 'a1 **) 5239 let rec word_side_rect_Type0 h_HIGH h_LOW = function 5240 | HIGH -> h_HIGH 5241 | LOW -> h_LOW 5242 5243 (** val word_side_inv_rect_Type4 : 5244 word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **) 5245 let word_side_inv_rect_Type4 hterm h1 h2 = 5246 let hcut = word_side_rect_Type4 h1 h2 hterm in hcut __ 5247 5248 (** val word_side_inv_rect_Type3 : 5249 word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **) 5250 let word_side_inv_rect_Type3 hterm h1 h2 = 5251 let hcut = word_side_rect_Type3 h1 h2 hterm in hcut __ 5252 5253 (** val word_side_inv_rect_Type2 : 5254 word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **) 5255 let word_side_inv_rect_Type2 hterm h1 h2 = 5256 let hcut = word_side_rect_Type2 h1 h2 hterm in hcut __ 5257 5258 (** val word_side_inv_rect_Type1 : 5259 word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **) 5260 let word_side_inv_rect_Type1 hterm h1 h2 = 5261 let hcut = word_side_rect_Type1 h1 h2 hterm in hcut __ 5262 5263 (** val word_side_inv_rect_Type0 : 5264 word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 **) 5265 let word_side_inv_rect_Type0 hterm h1 h2 = 5266 let hcut = word_side_rect_Type0 h1 h2 hterm in hcut __ 5267 5268 (** val word_side_discr : word_side -> word_side -> __ **) 5269 let word_side_discr x y = 5270 Logic.eq_rect_Type2 x 5271 (match x with 5272 | HIGH -> Obj.magic (fun _ dH -> dH) 5273 | LOW -> Obj.magic (fun _ dH -> dH)) y 5274 5275 (** val word_side_jmdiscr : word_side -> word_side -> __ **) 5276 let word_side_jmdiscr x y = 5277 Logic.eq_rect_Type2 x 5278 (match x with 5279 | HIGH -> Obj.magic (fun _ dH -> dH) 5280 | LOW -> Obj.magic (fun _ dH -> dH)) y 5144 5281 5145 5282 type pseudo_instruction = … … 5148 5285 | Cost of CostLabel.costlabel 5149 5286 | Jmp of identifier0 5287 | Jnz of subaddressing_mode * identifier0 * identifier0 5288 | MovSuccessor of subaddressing_mode * word_side * identifier0 5150 5289 | Call of identifier0 5151 5290 | Mov of subaddressing_mode * identifier0 … … 5153 5292 (** val pseudo_instruction_rect_Type4 : 5154 5293 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5155 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5156 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5157 -> 'a1 **) 5158 let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5159 | Instruction x_2057 -> h_Instruction x_2057 5160 | Comment x_2058 -> h_Comment x_2058 5161 | Cost x_2059 -> h_Cost x_2059 5162 | Jmp x_2060 -> h_Jmp x_2060 5163 | Call x_2061 -> h_Call x_2061 5164 | Mov (x_2063, x_2062) -> h_Mov x_2063 x_2062 5294 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5295 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5296 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5297 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5298 pseudo_instruction -> 'a1 **) 5299 let rec pseudo_instruction_rect_Type4 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5300 | Instruction x_20761 -> h_Instruction x_20761 5301 | Comment x_20762 -> h_Comment x_20762 5302 | Cost x_20763 -> h_Cost x_20763 5303 | Jmp x_20764 -> h_Jmp x_20764 5304 | Jnz (x_20767, x_20766, x_20765) -> h_Jnz x_20767 x_20766 x_20765 5305 | MovSuccessor (x_20770, x_20769, x_20768) -> 5306 h_MovSuccessor x_20770 x_20769 x_20768 5307 | Call x_20771 -> h_Call x_20771 5308 | Mov (x_20773, x_20772) -> h_Mov x_20773 x_20772 5165 5309 5166 5310 (** val pseudo_instruction_rect_Type5 : 5167 5311 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5168 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5169 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5170 -> 'a1 **) 5171 let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5172 | Instruction x_2071 -> h_Instruction x_2071 5173 | Comment x_2072 -> h_Comment x_2072 5174 | Cost x_2073 -> h_Cost x_2073 5175 | Jmp x_2074 -> h_Jmp x_2074 5176 | Call x_2075 -> h_Call x_2075 5177 | Mov (x_2077, x_2076) -> h_Mov x_2077 x_2076 5312 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5313 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5314 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5315 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5316 pseudo_instruction -> 'a1 **) 5317 let rec pseudo_instruction_rect_Type5 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5318 | Instruction x_20783 -> h_Instruction x_20783 5319 | Comment x_20784 -> h_Comment x_20784 5320 | Cost x_20785 -> h_Cost x_20785 5321 | Jmp x_20786 -> h_Jmp x_20786 5322 | Jnz (x_20789, x_20788, x_20787) -> h_Jnz x_20789 x_20788 x_20787 5323 | MovSuccessor (x_20792, x_20791, x_20790) -> 5324 h_MovSuccessor x_20792 x_20791 x_20790 5325 | Call x_20793 -> h_Call x_20793 5326 | Mov (x_20795, x_20794) -> h_Mov x_20795 x_20794 5178 5327 5179 5328 (** val pseudo_instruction_rect_Type3 : 5180 5329 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5181 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5182 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5183 -> 'a1 **) 5184 let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5185 | Instruction x_2085 -> h_Instruction x_2085 5186 | Comment x_2086 -> h_Comment x_2086 5187 | Cost x_2087 -> h_Cost x_2087 5188 | Jmp x_2088 -> h_Jmp x_2088 5189 | Call x_2089 -> h_Call x_2089 5190 | Mov (x_2091, x_2090) -> h_Mov x_2091 x_2090 5330 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5331 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5332 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5333 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5334 pseudo_instruction -> 'a1 **) 5335 let rec pseudo_instruction_rect_Type3 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5336 | Instruction x_20805 -> h_Instruction x_20805 5337 | Comment x_20806 -> h_Comment x_20806 5338 | Cost x_20807 -> h_Cost x_20807 5339 | Jmp x_20808 -> h_Jmp x_20808 5340 | Jnz (x_20811, x_20810, x_20809) -> h_Jnz x_20811 x_20810 x_20809 5341 | MovSuccessor (x_20814, x_20813, x_20812) -> 5342 h_MovSuccessor x_20814 x_20813 x_20812 5343 | Call x_20815 -> h_Call x_20815 5344 | Mov (x_20817, x_20816) -> h_Mov x_20817 x_20816 5191 5345 5192 5346 (** val pseudo_instruction_rect_Type2 : 5193 5347 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5194 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5195 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5196 -> 'a1 **) 5197 let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5198 | Instruction x_2099 -> h_Instruction x_2099 5199 | Comment x_2100 -> h_Comment x_2100 5200 | Cost x_2101 -> h_Cost x_2101 5201 | Jmp x_2102 -> h_Jmp x_2102 5202 | Call x_2103 -> h_Call x_2103 5203 | Mov (x_2105, x_2104) -> h_Mov x_2105 x_2104 5348 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5349 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5350 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5351 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5352 pseudo_instruction -> 'a1 **) 5353 let rec pseudo_instruction_rect_Type2 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5354 | Instruction x_20827 -> h_Instruction x_20827 5355 | Comment x_20828 -> h_Comment x_20828 5356 | Cost x_20829 -> h_Cost x_20829 5357 | Jmp x_20830 -> h_Jmp x_20830 5358 | Jnz (x_20833, x_20832, x_20831) -> h_Jnz x_20833 x_20832 x_20831 5359 | MovSuccessor (x_20836, x_20835, x_20834) -> 5360 h_MovSuccessor x_20836 x_20835 x_20834 5361 | Call x_20837 -> h_Call x_20837 5362 | Mov (x_20839, x_20838) -> h_Mov x_20839 x_20838 5204 5363 5205 5364 (** val pseudo_instruction_rect_Type1 : 5206 5365 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5207 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5208 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5209 -> 'a1 **) 5210 let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5211 | Instruction x_2113 -> h_Instruction x_2113 5212 | Comment x_2114 -> h_Comment x_2114 5213 | Cost x_2115 -> h_Cost x_2115 5214 | Jmp x_2116 -> h_Jmp x_2116 5215 | Call x_2117 -> h_Call x_2117 5216 | Mov (x_2119, x_2118) -> h_Mov x_2119 x_2118 5366 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5367 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5368 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5369 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5370 pseudo_instruction -> 'a1 **) 5371 let rec pseudo_instruction_rect_Type1 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5372 | Instruction x_20849 -> h_Instruction x_20849 5373 | Comment x_20850 -> h_Comment x_20850 5374 | Cost x_20851 -> h_Cost x_20851 5375 | Jmp x_20852 -> h_Jmp x_20852 5376 | Jnz (x_20855, x_20854, x_20853) -> h_Jnz x_20855 x_20854 x_20853 5377 | MovSuccessor (x_20858, x_20857, x_20856) -> 5378 h_MovSuccessor x_20858 x_20857 x_20856 5379 | Call x_20859 -> h_Call x_20859 5380 | Mov (x_20861, x_20860) -> h_Mov x_20861 x_20860 5217 5381 5218 5382 (** val pseudo_instruction_rect_Type0 : 5219 5383 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 5220 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 5221 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction 5222 -> 'a1 **) 5223 let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Call h_Mov = function 5224 | Instruction x_2127 -> h_Instruction x_2127 5225 | Comment x_2128 -> h_Comment x_2128 5226 | Cost x_2129 -> h_Cost x_2129 5227 | Jmp x_2130 -> h_Jmp x_2130 5228 | Call x_2131 -> h_Call x_2131 5229 | Mov (x_2133, x_2132) -> h_Mov x_2133 x_2132 5384 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> 5385 (subaddressing_mode -> identifier0 -> identifier0 -> 'a1) -> 5386 (subaddressing_mode -> word_side -> identifier0 -> 'a1) -> (identifier0 5387 -> 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> 5388 pseudo_instruction -> 'a1 **) 5389 let rec pseudo_instruction_rect_Type0 h_Instruction h_Comment h_Cost h_Jmp h_Jnz h_MovSuccessor h_Call h_Mov = function 5390 | Instruction x_20871 -> h_Instruction x_20871 5391 | Comment x_20872 -> h_Comment x_20872 5392 | Cost x_20873 -> h_Cost x_20873 5393 | Jmp x_20874 -> h_Jmp x_20874 5394 | Jnz (x_20877, x_20876, x_20875) -> h_Jnz x_20877 x_20876 x_20875 5395 | MovSuccessor (x_20880, x_20879, x_20878) -> 5396 h_MovSuccessor x_20880 x_20879 x_20878 5397 | Call x_20881 -> h_Call x_20881 5398 | Mov (x_20883, x_20882) -> h_Mov x_20883 x_20882 5230 5399 5231 5400 (** val pseudo_instruction_inv_rect_Type4 : 5232 5401 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 5233 5402 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 5234 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5403 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 5404 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 5405 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5235 5406 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **) 5236 let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 = 5237 let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 hterm in hcut __ 5407 let pseudo_instruction_inv_rect_Type4 hterm h1 h2 h3 h4 h5 h6 h7 h8 = 5408 let hcut = pseudo_instruction_rect_Type4 h1 h2 h3 h4 h5 h6 h7 h8 hterm in 5409 hcut __ 5238 5410 5239 5411 (** val pseudo_instruction_inv_rect_Type3 : 5240 5412 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 5241 5413 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 5242 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5414 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 5415 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 5416 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5243 5417 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **) 5244 let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 = 5245 let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 hterm in hcut __ 5418 let pseudo_instruction_inv_rect_Type3 hterm h1 h2 h3 h4 h5 h6 h7 h8 = 5419 let hcut = pseudo_instruction_rect_Type3 h1 h2 h3 h4 h5 h6 h7 h8 hterm in 5420 hcut __ 5246 5421 5247 5422 (** val pseudo_instruction_inv_rect_Type2 : 5248 5423 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 5249 5424 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 5250 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5425 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 5426 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 5427 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5251 5428 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **) 5252 let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 = 5253 let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 hterm in hcut __ 5429 let pseudo_instruction_inv_rect_Type2 hterm h1 h2 h3 h4 h5 h6 h7 h8 = 5430 let hcut = pseudo_instruction_rect_Type2 h1 h2 h3 h4 h5 h6 h7 h8 hterm in 5431 hcut __ 5254 5432 5255 5433 (** val pseudo_instruction_inv_rect_Type1 : 5256 5434 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 5257 5435 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 5258 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5436 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 5437 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 5438 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5259 5439 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **) 5260 let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 = 5261 let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 hterm in hcut __ 5440 let pseudo_instruction_inv_rect_Type1 hterm h1 h2 h3 h4 h5 h6 h7 h8 = 5441 let hcut = pseudo_instruction_rect_Type1 h1 h2 h3 h4 h5 h6 h7 h8 hterm in 5442 hcut __ 5262 5443 5263 5444 (** val pseudo_instruction_inv_rect_Type0 : 5264 5445 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 5265 5446 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 5266 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5447 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 5448 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 5449 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 5267 5450 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 **) 5268 let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 = 5269 let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 hterm in hcut __ 5451 let pseudo_instruction_inv_rect_Type0 hterm h1 h2 h3 h4 h5 h6 h7 h8 = 5452 let hcut = pseudo_instruction_rect_Type0 h1 h2 h3 h4 h5 h6 h7 h8 hterm in 5453 hcut __ 5270 5454 5271 5455 (** val pseudo_instruction_discr : … … 5278 5462 | Cost a0 -> Obj.magic (fun _ dH -> dH __) 5279 5463 | Jmp a0 -> Obj.magic (fun _ dH -> dH __) 5464 | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __) 5465 | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __) 5280 5466 | Call a0 -> Obj.magic (fun _ dH -> dH __) 5281 5467 | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y … … 5290 5476 | Cost a0 -> Obj.magic (fun _ dH -> dH __) 5291 5477 | Jmp a0 -> Obj.magic (fun _ dH -> dH __) 5478 | Jnz (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __) 5479 | MovSuccessor (a0, a1, a2) -> Obj.magic (fun _ dH -> dH __ __ __) 5292 5480 | Call a0 -> Obj.magic (fun _ dH -> dH __) 5293 5481 | Mov (a0, a1) -> Obj.magic (fun _ dH -> dH __ __)) y … … 5295 5483 type labelled_instruction = pseudo_instruction LabelledObjects.labelled_obj 5296 5484 5297 type preamble = 5298 (Nat.nat Identifiers.identifier_map, (identifier0, BitVector.word) 5299 Types.prod List.list) Types.prod 5485 type preamble = (identifier0, BitVector.word) Types.prod List.list 5300 5486 5301 5487 type assembly_program = instruction List.list … … 5343 5529 | RETI -> Bool.False 5344 5530 | NOP -> Bool.False 5531 | JMP x0 -> Bool.False 5345 5532 5346 5533 (** val is_relative_jump : pseudo_instruction -> Bool.bool **) … … 5350 5537 | Cost x -> Bool.False 5351 5538 | Jmp x -> Bool.False 5539 | Jnz (x, x0, x1) -> Bool.False 5540 | MovSuccessor (x, x0, x1) -> Bool.False 5352 5541 | Call x -> Bool.False 5353 5542 | Mov (x, x0) -> Bool.False … … 5359 5548 | Cost x -> Bool.False 5360 5549 | Jmp x -> Bool.True 5550 | Jnz (x, x0, x1) -> Bool.False 5551 | MovSuccessor (x, x0, x1) -> Bool.False 5361 5552 | Call x -> Bool.True 5362 5553 | Mov (x, x0) -> Bool.False … … 5368 5559 | Cost x -> Bool.False 5369 5560 | Jmp x -> Bool.False 5561 | Jnz (x, x0, x1) -> Bool.False 5562 | MovSuccessor (x, x0, x1) -> Bool.False 5370 5563 | Call x -> Bool.True 5371 5564 | Mov (x, x0) -> Bool.False -
extracted/aSM.mli
r2649 r2717 60 60 61 61 open Identifiers 62 63 open BitVectorTrie 64 65 open Exp 62 66 63 67 open Arithmetic … … 433 437 | RETI 434 438 | NOP 439 | JMP of subaddressing_mode 435 440 436 441 val preinstruction_rect_Type4 : … … 466 471 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 467 472 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 468 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->469 'a2 473 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 474 'a2) -> 'a1 preinstruction -> 'a2 470 475 471 476 val preinstruction_rect_Type5 : … … 501 506 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 502 507 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 503 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->504 'a2 508 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 509 'a2) -> 'a1 preinstruction -> 'a2 505 510 506 511 val preinstruction_rect_Type3 : … … 536 541 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 537 542 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 538 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->539 'a2 543 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 544 'a2) -> 'a1 preinstruction -> 'a2 540 545 541 546 val preinstruction_rect_Type2 : … … 571 576 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 572 577 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 573 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->574 'a2 578 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 579 'a2) -> 'a1 preinstruction -> 'a2 575 580 576 581 val preinstruction_rect_Type1 : … … 606 611 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 607 612 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 608 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->609 'a2 613 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 614 'a2) -> 'a1 preinstruction -> 'a2 610 615 611 616 val preinstruction_rect_Type0 : … … 641 646 'a2) -> (subaddressing_mode -> 'a2) -> (subaddressing_mode -> 'a2) -> 642 647 (subaddressing_mode -> subaddressing_mode -> 'a2) -> (subaddressing_mode -> 643 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> 'a1 preinstruction->644 'a2 648 subaddressing_mode -> 'a2) -> 'a2 -> 'a2 -> 'a2 -> (subaddressing_mode -> 649 'a2) -> 'a1 preinstruction -> 'a2 645 650 646 651 val preinstruction_inv_rect_Type4 : … … 680 685 subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode -> 681 686 subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ -> 682 'a2) -> 'a2687 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 683 688 684 689 val preinstruction_inv_rect_Type3 : … … 718 723 subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode -> 719 724 subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ -> 720 'a2) -> 'a2725 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 721 726 722 727 val preinstruction_inv_rect_Type2 : … … 756 761 subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode -> 757 762 subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ -> 758 'a2) -> 'a2763 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 759 764 760 765 val preinstruction_inv_rect_Type1 : … … 794 799 subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode -> 795 800 subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ -> 796 'a2) -> 'a2801 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 797 802 798 803 val preinstruction_inv_rect_Type0 : … … 832 837 subaddressing_mode -> __ -> 'a2) -> (subaddressing_mode -> 833 838 subaddressing_mode -> __ -> 'a2) -> (__ -> 'a2) -> (__ -> 'a2) -> (__ -> 834 'a2) -> 'a2839 'a2) -> (subaddressing_mode -> __ -> 'a2) -> 'a2 835 840 836 841 val preinstruction_discr : 'a1 preinstruction -> 'a1 preinstruction -> __ … … 848 853 | LJMP of subaddressing_mode 849 854 | SJMP of subaddressing_mode 850 | JMP of subaddressing_mode851 855 | MOVC of subaddressing_mode * subaddressing_mode 852 856 | RealInstruction of subaddressing_mode preinstruction … … 855 859 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 856 860 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 857 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 858 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 859 preinstruction -> 'a1) -> instruction -> 'a1 861 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 862 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 860 863 861 864 val instruction_rect_Type5 : 862 865 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 863 866 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 864 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 865 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 866 preinstruction -> 'a1) -> instruction -> 'a1 867 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 868 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 867 869 868 870 val instruction_rect_Type3 : 869 871 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 870 872 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 871 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 872 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 873 preinstruction -> 'a1) -> instruction -> 'a1 873 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 874 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 874 875 875 876 val instruction_rect_Type2 : 876 877 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 877 878 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 878 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 879 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 880 preinstruction -> 'a1) -> instruction -> 'a1 879 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 880 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 881 881 882 882 val instruction_rect_Type1 : 883 883 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 884 884 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 885 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 886 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 887 preinstruction -> 'a1) -> instruction -> 'a1 885 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 886 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 888 887 889 888 val instruction_rect_Type0 : 890 889 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 891 890 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 892 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> 'a1) -> 893 (subaddressing_mode -> subaddressing_mode -> 'a1) -> (subaddressing_mode 894 preinstruction -> 'a1) -> instruction -> 'a1 891 (subaddressing_mode -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> 892 'a1) -> (subaddressing_mode preinstruction -> 'a1) -> instruction -> 'a1 895 893 896 894 val instruction_inv_rect_Type4 : … … 898 896 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 899 897 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 900 __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)->901 (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1898 subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction -> 899 __ -> 'a1) -> 'a1 902 900 903 901 val instruction_inv_rect_Type3 : … … 905 903 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 906 904 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 907 __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)->908 (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1905 subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction -> 906 __ -> 'a1) -> 'a1 909 907 910 908 val instruction_inv_rect_Type2 : … … 912 910 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 913 911 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 914 __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)->915 (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1912 subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction -> 913 __ -> 'a1) -> 'a1 916 914 917 915 val instruction_inv_rect_Type1 : … … 919 917 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 920 918 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 921 __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)->922 (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1919 subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction -> 920 __ -> 'a1) -> 'a1 923 921 924 922 val instruction_inv_rect_Type0 : … … 926 924 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 927 925 __ -> 'a1) -> (subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode -> 928 __ -> 'a1) -> (subaddressing_mode -> subaddressing_mode -> __ -> 'a1)->929 (subaddressing_mode preinstruction ->__ -> 'a1) -> 'a1926 subaddressing_mode -> __ -> 'a1) -> (subaddressing_mode preinstruction -> 927 __ -> 'a1) -> 'a1 930 928 931 929 val instruction_discr : instruction -> instruction -> __ … … 934 932 935 933 val eq_instruction : instruction -> instruction -> Bool.bool 934 935 type word_side = 936 | HIGH 937 | LOW 938 939 val word_side_rect_Type4 : 'a1 -> 'a1 -> word_side -> 'a1 940 941 val word_side_rect_Type5 : 'a1 -> 'a1 -> word_side -> 'a1 942 943 val word_side_rect_Type3 : 'a1 -> 'a1 -> word_side -> 'a1 944 945 val word_side_rect_Type2 : 'a1 -> 'a1 -> word_side -> 'a1 946 947 val word_side_rect_Type1 : 'a1 -> 'a1 -> word_side -> 'a1 948 949 val word_side_rect_Type0 : 'a1 -> 'a1 -> word_side -> 'a1 950 951 val word_side_inv_rect_Type4 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 952 953 val word_side_inv_rect_Type3 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 954 955 val word_side_inv_rect_Type2 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 956 957 val word_side_inv_rect_Type1 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 958 959 val word_side_inv_rect_Type0 : word_side -> (__ -> 'a1) -> (__ -> 'a1) -> 'a1 960 961 val word_side_discr : word_side -> word_side -> __ 962 963 val word_side_jmdiscr : word_side -> word_side -> __ 936 964 937 965 type pseudo_instruction = … … 940 968 | Cost of CostLabel.costlabel 941 969 | Jmp of identifier0 970 | Jnz of subaddressing_mode * identifier0 * identifier0 971 | MovSuccessor of subaddressing_mode * word_side * identifier0 942 972 | Call of identifier0 943 973 | Mov of subaddressing_mode * identifier0 … … 945 975 val pseudo_instruction_rect_Type4 : 946 976 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 947 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 948 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 949 'a1 977 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 978 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 979 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 980 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 950 981 951 982 val pseudo_instruction_rect_Type5 : 952 983 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 953 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 954 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 955 'a1 984 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 985 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 986 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 987 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 956 988 957 989 val pseudo_instruction_rect_Type3 : 958 990 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 959 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 960 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 961 'a1 991 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 992 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 993 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 994 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 962 995 963 996 val pseudo_instruction_rect_Type2 : 964 997 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 965 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 966 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 967 'a1 998 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 999 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 1000 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 1001 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 968 1002 969 1003 val pseudo_instruction_rect_Type1 : 970 1004 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 971 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 972 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 973 'a1 1005 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 1006 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 1007 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 1008 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 974 1009 975 1010 val pseudo_instruction_rect_Type0 : 976 1011 (identifier0 preinstruction -> 'a1) -> (String.string -> 'a1) -> 977 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (identifier0 -> 978 'a1) -> (subaddressing_mode -> identifier0 -> 'a1) -> pseudo_instruction -> 979 'a1 1012 (CostLabel.costlabel -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode 1013 -> identifier0 -> identifier0 -> 'a1) -> (subaddressing_mode -> word_side 1014 -> identifier0 -> 'a1) -> (identifier0 -> 'a1) -> (subaddressing_mode -> 1015 identifier0 -> 'a1) -> pseudo_instruction -> 'a1 980 1016 981 1017 val pseudo_instruction_inv_rect_Type4 : 982 1018 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 983 1019 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 984 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1020 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 1021 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 1022 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 985 1023 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 986 1024 … … 988 1026 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 989 1027 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 990 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1028 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 1029 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 1030 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 991 1031 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 992 1032 … … 994 1034 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 995 1035 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 996 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1036 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 1037 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 1038 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 997 1039 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 998 1040 … … 1000 1042 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 1001 1043 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 1002 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1044 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 1045 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 1046 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1003 1047 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 1004 1048 … … 1006 1050 pseudo_instruction -> (identifier0 preinstruction -> __ -> 'a1) -> 1007 1051 (String.string -> __ -> 'a1) -> (CostLabel.costlabel -> __ -> 'a1) -> 1008 (identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1052 (identifier0 -> __ -> 'a1) -> (subaddressing_mode -> identifier0 -> 1053 identifier0 -> __ -> 'a1) -> (subaddressing_mode -> word_side -> 1054 identifier0 -> __ -> 'a1) -> (identifier0 -> __ -> 'a1) -> 1009 1055 (subaddressing_mode -> identifier0 -> __ -> 'a1) -> 'a1 1010 1056 … … 1016 1062 type labelled_instruction = pseudo_instruction LabelledObjects.labelled_obj 1017 1063 1018 type preamble = 1019 (Nat.nat Identifiers.identifier_map, (identifier0, BitVector.word) 1020 Types.prod List.list) Types.prod 1064 type preamble = (identifier0, BitVector.word) Types.prod List.list 1021 1065 1022 1066 type assembly_program = instruction List.list -
extracted/aSMCosts.ml
r2649 r2717 5 5 open LabelledObjects 6 6 7 open BitVectorTrie 8 9 open Exp 10 7 11 open Arithmetic 8 12 … … 74 78 75 79 open ASM 76 77 open BitVectorTrie78 80 79 81 open Fetch … … 141 143 | StructuredTraces.Tal_base_call (pre_fun_call, start_fun_call, final, x2) -> 142 144 Interpret.current_instruction_cost code_memory (Obj.magic pre_fun_call) 143 | StructuredTraces.Tal_base_tailcall (x, x0, x1, x4) -> 144 assert false (* absurd case *) 145 | StructuredTraces.Tal_base_tailcall 146 (pre_fun_call, start_fun_call, final, x1) -> 147 Interpret.current_instruction_cost code_memory (Obj.magic pre_fun_call) 145 148 | StructuredTraces.Tal_step_call 146 149 (end_flag, pre_fun_call, start_fun_call, after_fun_call, final, … … 184 187 | Nat.S program_size' -> 185 188 (fun _ -> 186 (let { Types.fst = eta 24805; Types.snd = ticks } =189 (let { Types.fst = eta31521; Types.snd = ticks } = 187 190 Fetch.fetch code_memory' program_counter' 188 191 in 189 192 let { Types.fst = instruction0; Types.snd = program_counter'' } = 190 eta 24805193 eta31521 191 194 in 192 195 (fun _ -> … … 247 250 (block_cost' code_memory' jump_target program_size' 248 251 cost_labels Bool.False))) 249 | ASM.JMP addr ->250 (fun _ ->251 Nat.plus ticks252 (Types.pi1253 (block_cost' code_memory' program_counter''254 program_size' cost_labels Bool.False)))255 252 | ASM.MOVC (src, trgt) -> 256 253 (fun _ -> … … 428 425 (Types.pi1 429 426 (block_cost' code_memory' program_counter'' 427 program_size' cost_labels Bool.False))) 428 | ASM.JMP addr -> 429 (fun _ -> 430 Nat.plus ticks 431 (Types.pi1 432 (block_cost' code_memory' program_counter'' 430 433 program_size' cost_labels Bool.False)))) __)) 431 434 __)) … … 440 443 let cost_of_block = 441 444 block_cost' code_memory program_counter0 442 ( Util.exponential (Nat.S (Nat.S Nat.O))(Nat.S (Nat.S (Nat.S (Nat.S445 (Exp.exp (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 443 446 (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 444 (Nat.S (Nat.SNat.O))))))))))))))))) cost_labels Bool.True447 (Nat.S Nat.O))))))))))))))))) cost_labels Bool.True 445 448 in 446 449 cost_of_block -
extracted/aSMCosts.mli
r2649 r2717 4 4 5 5 open LabelledObjects 6 7 open BitVectorTrie 8 9 open Exp 6 10 7 11 open Arithmetic … … 75 79 open ASM 76 80 77 open BitVectorTrie78 79 81 open Fetch 80 82 -
extracted/aSMCostsSplit.ml
r2649 r2717 15 15 open Interpret 16 16 17 open BitVectorTrie18 19 17 open Fetch 20 18 … … 22 20 23 21 open LabelledObjects 22 23 open BitVectorTrie 24 25 open Exp 24 26 25 27 open Arithmetic … … 142 144 (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 143 145 Nat.O))))))))))))))))) 144 ( Util.exponential (Nat.S (Nat.S Nat.O))(Nat.S (Nat.S (Nat.S (Nat.S146 (Exp.exp (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 145 147 (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 146 (Nat.S (Nat.SNat.O))))))))))))))))))148 (Nat.S Nat.O)))))))))))))))))) 147 149 148 150 (** val compute_costs : -
extracted/aSMCostsSplit.mli
r2649 r2717 15 15 open Interpret 16 16 17 open BitVectorTrie18 19 17 open Fetch 20 18 … … 22 20 23 21 open LabelledObjects 22 23 open BitVectorTrie 24 25 open Exp 24 26 25 27 open Arithmetic -
extracted/aST.ml
r2649 r2717 10 10 11 11 open Types 12 13 open Exp 12 14 13 15 open Arithmetic … … 416 418 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 417 419 let rec typ_rect_Type4 h_ASTint h_ASTptr = function 418 | ASTint (x_ 1373, x_1372) -> h_ASTint x_1373 x_1372420 | ASTint (x_3480, x_3479) -> h_ASTint x_3480 x_3479 419 421 | ASTptr -> h_ASTptr 420 422 … … 422 424 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 423 425 let rec typ_rect_Type5 h_ASTint h_ASTptr = function 424 | ASTint (x_ 1378, x_1377) -> h_ASTint x_1378 x_1377426 | ASTint (x_3485, x_3484) -> h_ASTint x_3485 x_3484 425 427 | ASTptr -> h_ASTptr 426 428 … … 428 430 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 429 431 let rec typ_rect_Type3 h_ASTint h_ASTptr = function 430 | ASTint (x_ 1383, x_1382) -> h_ASTint x_1383 x_1382432 | ASTint (x_3490, x_3489) -> h_ASTint x_3490 x_3489 431 433 | ASTptr -> h_ASTptr 432 434 … … 434 436 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 435 437 let rec typ_rect_Type2 h_ASTint h_ASTptr = function 436 | ASTint (x_ 1388, x_1387) -> h_ASTint x_1388 x_1387438 | ASTint (x_3495, x_3494) -> h_ASTint x_3495 x_3494 437 439 | ASTptr -> h_ASTptr 438 440 … … 440 442 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 441 443 let rec typ_rect_Type1 h_ASTint h_ASTptr = function 442 | ASTint (x_ 1393, x_1392) -> h_ASTint x_1393 x_1392444 | ASTint (x_3500, x_3499) -> h_ASTint x_3500 x_3499 443 445 | ASTptr -> h_ASTptr 444 446 … … 446 448 (intsize -> signedness -> 'a1) -> 'a1 -> typ -> 'a1 **) 447 449 let rec typ_rect_Type0 h_ASTint h_ASTptr = function 448 | ASTint (x_ 1398, x_1397) -> h_ASTint x_1398 x_1397450 | ASTint (x_3505, x_3504) -> h_ASTint x_3505 x_3504 449 451 | ASTptr -> h_ASTptr 450 452 … … 875 877 (** val signature_rect_Type4 : 876 878 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 877 let rec signature_rect_Type4 h_mk_signature x_ 1433=878 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1433in879 let rec signature_rect_Type4 h_mk_signature x_3540 = 880 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3540 in 879 881 h_mk_signature sig_args0 sig_res0 880 882 881 883 (** val signature_rect_Type5 : 882 884 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 883 let rec signature_rect_Type5 h_mk_signature x_ 1435=884 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1435in885 let rec signature_rect_Type5 h_mk_signature x_3542 = 886 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3542 in 885 887 h_mk_signature sig_args0 sig_res0 886 888 887 889 (** val signature_rect_Type3 : 888 890 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 889 let rec signature_rect_Type3 h_mk_signature x_ 1437=890 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1437in891 let rec signature_rect_Type3 h_mk_signature x_3544 = 892 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3544 in 891 893 h_mk_signature sig_args0 sig_res0 892 894 893 895 (** val signature_rect_Type2 : 894 896 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 895 let rec signature_rect_Type2 h_mk_signature x_ 1439=896 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1439in897 let rec signature_rect_Type2 h_mk_signature x_3546 = 898 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3546 in 897 899 h_mk_signature sig_args0 sig_res0 898 900 899 901 (** val signature_rect_Type1 : 900 902 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 901 let rec signature_rect_Type1 h_mk_signature x_ 1441=902 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1441in903 let rec signature_rect_Type1 h_mk_signature x_3548 = 904 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3548 in 903 905 h_mk_signature sig_args0 sig_res0 904 906 905 907 (** val signature_rect_Type0 : 906 908 (typ List.list -> typ Types.option -> 'a1) -> signature -> 'a1 **) 907 let rec signature_rect_Type0 h_mk_signature x_ 1443=908 let { sig_args = sig_args0; sig_res = sig_res0 } = x_ 1443in909 let rec signature_rect_Type0 h_mk_signature x_3550 = 910 let { sig_args = sig_args0; sig_res = sig_res0 } = x_3550 in 909 911 h_mk_signature sig_args0 sig_res0 910 912 … … 982 984 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 983 985 let rec init_data_rect_Type4 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 984 | Init_int8 x_ 1471 -> h_Init_int8 x_1471985 | Init_int16 x_ 1472 -> h_Init_int16 x_1472986 | Init_int32 x_ 1473 -> h_Init_int32 x_1473987 | Init_space x_ 1474 -> h_Init_space x_1474986 | Init_int8 x_3578 -> h_Init_int8 x_3578 987 | Init_int16 x_3579 -> h_Init_int16 x_3579 988 | Init_int32 x_3580 -> h_Init_int32 x_3580 989 | Init_space x_3581 -> h_Init_space x_3581 988 990 | Init_null -> h_Init_null 989 | Init_addrof (x_ 1476, x_1475) -> h_Init_addrof x_1476 x_1475991 | Init_addrof (x_3583, x_3582) -> h_Init_addrof x_3583 x_3582 990 992 991 993 (** val init_data_rect_Type5 : … … 993 995 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 994 996 let rec init_data_rect_Type5 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 995 | Init_int8 x_ 1484 -> h_Init_int8 x_1484996 | Init_int16 x_ 1485 -> h_Init_int16 x_1485997 | Init_int32 x_ 1486 -> h_Init_int32 x_1486998 | Init_space x_ 1487 -> h_Init_space x_1487997 | Init_int8 x_3591 -> h_Init_int8 x_3591 998 | Init_int16 x_3592 -> h_Init_int16 x_3592 999 | Init_int32 x_3593 -> h_Init_int32 x_3593 1000 | Init_space x_3594 -> h_Init_space x_3594 999 1001 | Init_null -> h_Init_null 1000 | Init_addrof (x_ 1489, x_1488) -> h_Init_addrof x_1489 x_14881002 | Init_addrof (x_3596, x_3595) -> h_Init_addrof x_3596 x_3595 1001 1003 1002 1004 (** val init_data_rect_Type3 : … … 1004 1006 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 1005 1007 let rec init_data_rect_Type3 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 1006 | Init_int8 x_ 1497 -> h_Init_int8 x_14971007 | Init_int16 x_ 1498 -> h_Init_int16 x_14981008 | Init_int32 x_ 1499 -> h_Init_int32 x_14991009 | Init_space x_ 1500 -> h_Init_space x_15001008 | Init_int8 x_3604 -> h_Init_int8 x_3604 1009 | Init_int16 x_3605 -> h_Init_int16 x_3605 1010 | Init_int32 x_3606 -> h_Init_int32 x_3606 1011 | Init_space x_3607 -> h_Init_space x_3607 1010 1012 | Init_null -> h_Init_null 1011 | Init_addrof (x_ 1502, x_1501) -> h_Init_addrof x_1502 x_15011013 | Init_addrof (x_3609, x_3608) -> h_Init_addrof x_3609 x_3608 1012 1014 1013 1015 (** val init_data_rect_Type2 : … … 1015 1017 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 1016 1018 let rec init_data_rect_Type2 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 1017 | Init_int8 x_ 1510 -> h_Init_int8 x_15101018 | Init_int16 x_ 1511 -> h_Init_int16 x_15111019 | Init_int32 x_ 1512 -> h_Init_int32 x_15121020 | Init_space x_ 1513 -> h_Init_space x_15131019 | Init_int8 x_3617 -> h_Init_int8 x_3617 1020 | Init_int16 x_3618 -> h_Init_int16 x_3618 1021 | Init_int32 x_3619 -> h_Init_int32 x_3619 1022 | Init_space x_3620 -> h_Init_space x_3620 1021 1023 | Init_null -> h_Init_null 1022 | Init_addrof (x_ 1515, x_1514) -> h_Init_addrof x_1515 x_15141024 | Init_addrof (x_3622, x_3621) -> h_Init_addrof x_3622 x_3621 1023 1025 1024 1026 (** val init_data_rect_Type1 : … … 1026 1028 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 1027 1029 let rec init_data_rect_Type1 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 1028 | Init_int8 x_ 1523 -> h_Init_int8 x_15231029 | Init_int16 x_ 1524 -> h_Init_int16 x_15241030 | Init_int32 x_ 1525 -> h_Init_int32 x_15251031 | Init_space x_ 1526 -> h_Init_space x_15261030 | Init_int8 x_3630 -> h_Init_int8 x_3630 1031 | Init_int16 x_3631 -> h_Init_int16 x_3631 1032 | Init_int32 x_3632 -> h_Init_int32 x_3632 1033 | Init_space x_3633 -> h_Init_space x_3633 1032 1034 | Init_null -> h_Init_null 1033 | Init_addrof (x_ 1528, x_1527) -> h_Init_addrof x_1528 x_15271035 | Init_addrof (x_3635, x_3634) -> h_Init_addrof x_3635 x_3634 1034 1036 1035 1037 (** val init_data_rect_Type0 : … … 1037 1039 'a1 -> (ident -> Nat.nat -> 'a1) -> init_data -> 'a1 **) 1038 1040 let rec init_data_rect_Type0 h_Init_int8 h_Init_int16 h_Init_int32 h_Init_space h_Init_null h_Init_addrof = function 1039 | Init_int8 x_ 1536 -> h_Init_int8 x_15361040 | Init_int16 x_ 1537 -> h_Init_int16 x_15371041 | Init_int32 x_ 1538 -> h_Init_int32 x_15381042 | Init_space x_ 1539 -> h_Init_space x_15391041 | Init_int8 x_3643 -> h_Init_int8 x_3643 1042 | Init_int16 x_3644 -> h_Init_int16 x_3644 1043 | Init_int32 x_3645 -> h_Init_int32 x_3645 1044 | Init_space x_3646 -> h_Init_space x_3646 1043 1045 | Init_null -> h_Init_null 1044 | Init_addrof (x_ 1541, x_1540) -> h_Init_addrof x_1541 x_15401046 | Init_addrof (x_3648, x_3647) -> h_Init_addrof x_3648 x_3647 1045 1047 1046 1048 (** val init_data_inv_rect_Type4 : … … 1109 1111 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1110 1112 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1111 let rec program_rect_Type4 h_mk_program x_ 1628=1113 let rec program_rect_Type4 h_mk_program x_3735 = 1112 1114 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1113 prog_main0 } = x_ 16281115 prog_main0 } = x_3735 1114 1116 in 1115 1117 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1118 1120 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1119 1121 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1120 let rec program_rect_Type5 h_mk_program x_ 1630=1122 let rec program_rect_Type5 h_mk_program x_3737 = 1121 1123 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1122 prog_main0 } = x_ 16301124 prog_main0 } = x_3737 1123 1125 in 1124 1126 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1127 1129 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1128 1130 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1129 let rec program_rect_Type3 h_mk_program x_ 1632=1131 let rec program_rect_Type3 h_mk_program x_3739 = 1130 1132 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1131 prog_main0 } = x_ 16321133 prog_main0 } = x_3739 1132 1134 in 1133 1135 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1136 1138 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1137 1139 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1138 let rec program_rect_Type2 h_mk_program x_ 1634=1140 let rec program_rect_Type2 h_mk_program x_3741 = 1139 1141 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1140 prog_main0 } = x_ 16341142 prog_main0 } = x_3741 1141 1143 in 1142 1144 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1145 1147 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1146 1148 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1147 let rec program_rect_Type1 h_mk_program x_ 1636=1149 let rec program_rect_Type1 h_mk_program x_3743 = 1148 1150 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1149 prog_main0 } = x_ 16361151 prog_main0 } = x_3743 1150 1152 in 1151 1153 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1154 1156 (((ident, region) Types.prod, 'a2) Types.prod List.list -> (ident, 'a1) 1155 1157 Types.prod List.list -> ident -> 'a3) -> ('a1, 'a2) program -> 'a3 **) 1156 let rec program_rect_Type0 h_mk_program x_ 1638=1158 let rec program_rect_Type0 h_mk_program x_3745 = 1157 1159 let { prog_vars = prog_vars0; prog_funct = prog_funct0; prog_main = 1158 prog_main0 } = x_ 16381160 prog_main0 } = x_3745 1159 1161 in 1160 1162 h_mk_program prog_vars0 prog_funct0 prog_main0 … … 1479 1481 (** val external_function_rect_Type4 : 1480 1482 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1481 let rec external_function_rect_Type4 h_mk_external_function x_ 1842=1482 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1842in1483 let rec external_function_rect_Type4 h_mk_external_function x_3949 = 1484 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3949 in 1483 1485 h_mk_external_function ef_id0 ef_sig0 1484 1486 1485 1487 (** val external_function_rect_Type5 : 1486 1488 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1487 let rec external_function_rect_Type5 h_mk_external_function x_ 1844=1488 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1844in1489 let rec external_function_rect_Type5 h_mk_external_function x_3951 = 1490 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3951 in 1489 1491 h_mk_external_function ef_id0 ef_sig0 1490 1492 1491 1493 (** val external_function_rect_Type3 : 1492 1494 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1493 let rec external_function_rect_Type3 h_mk_external_function x_ 1846=1494 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1846in1495 let rec external_function_rect_Type3 h_mk_external_function x_3953 = 1496 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3953 in 1495 1497 h_mk_external_function ef_id0 ef_sig0 1496 1498 1497 1499 (** val external_function_rect_Type2 : 1498 1500 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1499 let rec external_function_rect_Type2 h_mk_external_function x_ 1848=1500 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1848in1501 let rec external_function_rect_Type2 h_mk_external_function x_3955 = 1502 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3955 in 1501 1503 h_mk_external_function ef_id0 ef_sig0 1502 1504 1503 1505 (** val external_function_rect_Type1 : 1504 1506 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1505 let rec external_function_rect_Type1 h_mk_external_function x_ 1850=1506 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1850in1507 let rec external_function_rect_Type1 h_mk_external_function x_3957 = 1508 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3957 in 1507 1509 h_mk_external_function ef_id0 ef_sig0 1508 1510 1509 1511 (** val external_function_rect_Type0 : 1510 1512 (ident -> signature -> 'a1) -> external_function -> 'a1 **) 1511 let rec external_function_rect_Type0 h_mk_external_function x_ 1852=1512 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_ 1852in1513 let rec external_function_rect_Type0 h_mk_external_function x_3959 = 1514 let { ef_id = ef_id0; ef_sig = ef_sig0 } = x_3959 in 1513 1515 h_mk_external_function ef_id0 ef_sig0 1514 1516 … … 1577 1579 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1578 1580 let rec fundef_rect_Type4 h_Internal h_External = function 1579 | Internal x_ 1872 -> h_Internal x_18721580 | External x_ 1873 -> h_External x_18731581 | Internal x_3979 -> h_Internal x_3979 1582 | External x_3980 -> h_External x_3980 1581 1583 1582 1584 (** val fundef_rect_Type5 : 1583 1585 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1584 1586 let rec fundef_rect_Type5 h_Internal h_External = function 1585 | Internal x_ 1877 -> h_Internal x_18771586 | External x_ 1878 -> h_External x_18781587 | Internal x_3984 -> h_Internal x_3984 1588 | External x_3985 -> h_External x_3985 1587 1589 1588 1590 (** val fundef_rect_Type3 : 1589 1591 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1590 1592 let rec fundef_rect_Type3 h_Internal h_External = function 1591 | Internal x_ 1882 -> h_Internal x_18821592 | External x_ 1883 -> h_External x_18831593 | Internal x_3989 -> h_Internal x_3989 1594 | External x_3990 -> h_External x_3990 1593 1595 1594 1596 (** val fundef_rect_Type2 : 1595 1597 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1596 1598 let rec fundef_rect_Type2 h_Internal h_External = function 1597 | Internal x_ 1887 -> h_Internal x_18871598 | External x_ 1888 -> h_External x_18881599 | Internal x_3994 -> h_Internal x_3994 1600 | External x_3995 -> h_External x_3995 1599 1601 1600 1602 (** val fundef_rect_Type1 : 1601 1603 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1602 1604 let rec fundef_rect_Type1 h_Internal h_External = function 1603 | Internal x_ 1892 -> h_Internal x_18921604 | External x_ 1893 -> h_External x_18931605 | Internal x_3999 -> h_Internal x_3999 1606 | External x_4000 -> h_External x_4000 1605 1607 1606 1608 (** val fundef_rect_Type0 : 1607 1609 ('a1 -> 'a2) -> (external_function -> 'a2) -> 'a1 fundef -> 'a2 **) 1608 1610 let rec fundef_rect_Type0 h_Internal h_External = function 1609 | Internal x_ 1897 -> h_Internal x_18971610 | External x_ 1898 -> h_External x_18981611 | Internal x_4004 -> h_Internal x_4004 1612 | External x_4005 -> h_External x_4005 1611 1613 1612 1614 (** val fundef_inv_rect_Type4 : -
extracted/aST.mli
r2649 r2717 10 10 11 11 open Types 12 13 open Exp 12 14 13 15 open Arithmetic -
extracted/abstractStatus.ml
r2649 r2717 4 4 5 5 open LabelledObjects 6 7 open BitVectorTrie 8 9 open Exp 6 10 7 11 open Arithmetic … … 75 79 open ASM 76 80 77 open BitVectorTrie78 79 81 open Status 80 82 … … 127 129 | ASM.RETI -> StructuredTraces.Cl_return 128 130 | ASM.NOP -> StructuredTraces.Cl_other 131 | ASM.JMP x -> StructuredTraces.Cl_call 129 132 130 133 (** val aSM_classify0 : ASM.instruction -> StructuredTraces.status_class **) … … 135 138 | ASM.LJMP x -> StructuredTraces.Cl_other 136 139 | ASM.SJMP x -> StructuredTraces.Cl_other 137 | ASM.JMP x -> StructuredTraces.Cl_call138 140 | ASM.MOVC (x, x0) -> StructuredTraces.Cl_other 139 141 | ASM.RealInstruction pre -> aSM_classify00 pre -
extracted/abstractStatus.mli
r2649 r2717 4 4 5 5 open LabelledObjects 6 7 open BitVectorTrie 8 9 open Exp 6 10 7 11 open Arithmetic … … 75 79 open ASM 76 80 77 open BitVectorTrie78 79 81 open Status 80 82 -
extracted/arithmetic.ml
r2649 r2717 34 34 35 35 open BitVector 36 37 open Exp 36 38 37 39 (** val addr16_of_addr11 : -
extracted/arithmetic.mli
r2649 r2717 34 34 35 35 open BitVector 36 37 open Exp 36 38 37 39 val addr16_of_addr11 : BitVector.word -> BitVector.word11 -> BitVector.word -
extracted/bitVectorTrie.ml
r2649 r2717 43 43 ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2 44 44 -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **) 45 let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_ 14569= function46 | Leaf x_ 14571 -> h_Leaf x_1457147 | Node (n, x_ 14573, x_14572) ->48 h_Node n x_ 14573 x_1457249 (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_ 14573)50 (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_ 14572)45 let rec bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub x_4046 = function 46 | Leaf x_4048 -> h_Leaf x_4048 47 | Node (n, x_4050, x_4049) -> 48 h_Node n x_4050 x_4049 49 (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_4050) 50 (bitVectorTrie_rect_Type4 h_Leaf h_Node h_Stub n x_4049) 51 51 | Stub n -> h_Stub n 52 52 … … 54 54 ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2 55 55 -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **) 56 let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_ 14585= function57 | Leaf x_ 14587 -> h_Leaf x_1458758 | Node (n, x_ 14589, x_14588) ->59 h_Node n x_ 14589 x_1458860 (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_ 14589)61 (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_ 14588)56 let rec bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub x_4062 = function 57 | Leaf x_4064 -> h_Leaf x_4064 58 | Node (n, x_4066, x_4065) -> 59 h_Node n x_4066 x_4065 60 (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_4066) 61 (bitVectorTrie_rect_Type3 h_Leaf h_Node h_Stub n x_4065) 62 62 | Stub n -> h_Stub n 63 63 … … 65 65 ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2 66 66 -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **) 67 let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_ 14593= function68 | Leaf x_ 14595 -> h_Leaf x_1459569 | Node (n, x_ 14597, x_14596) ->70 h_Node n x_ 14597 x_1459671 (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_ 14597)72 (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_ 14596)67 let rec bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub x_4070 = function 68 | Leaf x_4072 -> h_Leaf x_4072 69 | Node (n, x_4074, x_4073) -> 70 h_Node n x_4074 x_4073 71 (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_4074) 72 (bitVectorTrie_rect_Type2 h_Leaf h_Node h_Stub n x_4073) 73 73 | Stub n -> h_Stub n 74 74 … … 76 76 ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2 77 77 -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **) 78 let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_ 14601= function79 | Leaf x_ 14603 -> h_Leaf x_1460380 | Node (n, x_ 14605, x_14604) ->81 h_Node n x_ 14605 x_1460482 (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_ 14605)83 (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_ 14604)78 let rec bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub x_4078 = function 79 | Leaf x_4080 -> h_Leaf x_4080 80 | Node (n, x_4082, x_4081) -> 81 h_Node n x_4082 x_4081 82 (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_4082) 83 (bitVectorTrie_rect_Type1 h_Leaf h_Node h_Stub n x_4081) 84 84 | Stub n -> h_Stub n 85 85 … … 87 87 ('a1 -> 'a2) -> (Nat.nat -> 'a1 bitVectorTrie -> 'a1 bitVectorTrie -> 'a2 88 88 -> 'a2 -> 'a2) -> (Nat.nat -> 'a2) -> Nat.nat -> 'a1 bitVectorTrie -> 'a2 **) 89 let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_ 14609= function90 | Leaf x_ 14611 -> h_Leaf x_1461191 | Node (n, x_ 14613, x_14612) ->92 h_Node n x_ 14613 x_1461293 (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_ 14613)94 (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_ 14612)89 let rec bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub x_4086 = function 90 | Leaf x_4088 -> h_Leaf x_4088 91 | Node (n, x_4090, x_4089) -> 92 h_Node n x_4090 x_4089 93 (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_4090) 94 (bitVectorTrie_rect_Type0 h_Leaf h_Node h_Stub n x_4089) 95 95 | Stub n -> h_Stub n 96 96 -
extracted/bitVectorZ.ml
r2649 r2717 38 38 39 39 open BitVector 40 41 open Exp 40 42 41 43 open Arithmetic -
extracted/bitVectorZ.mli
r2649 r2717 39 39 open BitVector 40 40 41 open Exp 42 41 43 open Arithmetic 42 44 -
extracted/byteValues.ml
r2649 r2717 30 30 31 31 open Division 32 33 open Exp 32 34 33 35 open Arithmetic … … 87 89 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 88 90 'a1 **) 89 let rec program_counter_rect_Type4 h_mk_program_counter x_ 4510=90 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4510in91 let rec program_counter_rect_Type4 h_mk_program_counter x_6074 = 92 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6074 in 91 93 h_mk_program_counter pc_block0 pc_offset0 92 94 … … 94 96 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 95 97 'a1 **) 96 let rec program_counter_rect_Type5 h_mk_program_counter x_ 4512=97 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4512in98 let rec program_counter_rect_Type5 h_mk_program_counter x_6076 = 99 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6076 in 98 100 h_mk_program_counter pc_block0 pc_offset0 99 101 … … 101 103 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 102 104 'a1 **) 103 let rec program_counter_rect_Type3 h_mk_program_counter x_ 4514=104 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4514in105 let rec program_counter_rect_Type3 h_mk_program_counter x_6078 = 106 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6078 in 105 107 h_mk_program_counter pc_block0 pc_offset0 106 108 … … 108 110 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 109 111 'a1 **) 110 let rec program_counter_rect_Type2 h_mk_program_counter x_ 4516=111 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4516in112 let rec program_counter_rect_Type2 h_mk_program_counter x_6080 = 113 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6080 in 112 114 h_mk_program_counter pc_block0 pc_offset0 113 115 … … 115 117 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 116 118 'a1 **) 117 let rec program_counter_rect_Type1 h_mk_program_counter x_ 4518=118 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4518in119 let rec program_counter_rect_Type1 h_mk_program_counter x_6082 = 120 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6082 in 119 121 h_mk_program_counter pc_block0 pc_offset0 120 122 … … 122 124 (Pointers.block Types.sig0 -> Positive.pos -> 'a1) -> program_counter -> 123 125 'a1 **) 124 let rec program_counter_rect_Type0 h_mk_program_counter x_ 4520=125 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_ 4520in126 let rec program_counter_rect_Type0 h_mk_program_counter x_6084 = 127 let { pc_block = pc_block0; pc_offset = pc_offset0 } = x_6084 in 126 128 h_mk_program_counter pc_block0 pc_offset0 127 129 … … 213 215 214 216 (** val part_rect_Type4 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 215 let rec part_rect_Type4 h_mk_part x_ 4536=216 let part_no = x_ 4536in h_mk_part part_no __217 let rec part_rect_Type4 h_mk_part x_6100 = 218 let part_no = x_6100 in h_mk_part part_no __ 217 219 218 220 (** val part_rect_Type5 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 219 let rec part_rect_Type5 h_mk_part x_ 4538=220 let part_no = x_ 4538in h_mk_part part_no __221 let rec part_rect_Type5 h_mk_part x_6102 = 222 let part_no = x_6102 in h_mk_part part_no __ 221 223 222 224 (** val part_rect_Type3 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 223 let rec part_rect_Type3 h_mk_part x_ 4540=224 let part_no = x_ 4540in h_mk_part part_no __225 let rec part_rect_Type3 h_mk_part x_6104 = 226 let part_no = x_6104 in h_mk_part part_no __ 225 227 226 228 (** val part_rect_Type2 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 227 let rec part_rect_Type2 h_mk_part x_ 4542=228 let part_no = x_ 4542in h_mk_part part_no __229 let rec part_rect_Type2 h_mk_part x_6106 = 230 let part_no = x_6106 in h_mk_part part_no __ 229 231 230 232 (** val part_rect_Type1 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 231 let rec part_rect_Type1 h_mk_part x_ 4544=232 let part_no = x_ 4544in h_mk_part part_no __233 let rec part_rect_Type1 h_mk_part x_6108 = 234 let part_no = x_6108 in h_mk_part part_no __ 233 235 234 236 (** val part_rect_Type0 : (Nat.nat -> __ -> 'a1) -> part -> 'a1 **) 235 let rec part_rect_Type0 h_mk_part x_ 4546=236 let part_no = x_ 4546in h_mk_part part_no __237 let rec part_rect_Type0 h_mk_part x_6110 = 238 let part_no = x_6110 in h_mk_part part_no __ 237 239 238 240 (** val part_no : part -> Nat.nat **) … … 324 326 | BVundef -> h_BVundef 325 327 | BVnonzero -> h_BVnonzero 326 | BVXor (x_ 4580, x_4579, x_4578) -> h_BVXor x_4580 x_4579 x_4578327 | BVByte x_ 4581 -> h_BVByte x_4581328 | BVnull x_ 4582 -> h_BVnull x_4582329 | BVptr (x_ 4584, x_4583) -> h_BVptr x_4584 x_4583330 | BVpc (x_ 4586, x_4585) -> h_BVpc x_4586 x_4585328 | BVXor (x_6144, x_6143, x_6142) -> h_BVXor x_6144 x_6143 x_6142 329 | BVByte x_6145 -> h_BVByte x_6145 330 | BVnull x_6146 -> h_BVnull x_6146 331 | BVptr (x_6148, x_6147) -> h_BVptr x_6148 x_6147 332 | BVpc (x_6150, x_6149) -> h_BVpc x_6150 x_6149 331 333 332 334 (** val beval_rect_Type5 : … … 338 340 | BVundef -> h_BVundef 339 341 | BVnonzero -> h_BVnonzero 340 | BVXor (x_ 4597, x_4596, x_4595) -> h_BVXor x_4597 x_4596 x_4595341 | BVByte x_ 4598 -> h_BVByte x_4598342 | BVnull x_ 4599 -> h_BVnull x_4599343 | BVptr (x_ 4601, x_4600) -> h_BVptr x_4601 x_4600344 | BVpc (x_ 4603, x_4602) -> h_BVpc x_4603 x_4602342 | BVXor (x_6161, x_6160, x_6159) -> h_BVXor x_6161 x_6160 x_6159 343 | BVByte x_6162 -> h_BVByte x_6162 344 | BVnull x_6163 -> h_BVnull x_6163 345 | BVptr (x_6165, x_6164) -> h_BVptr x_6165 x_6164 346 | BVpc (x_6167, x_6166) -> h_BVpc x_6167 x_6166 345 347 346 348 (** val beval_rect_Type3 : … … 352 354 | BVundef -> h_BVundef 353 355 | BVnonzero -> h_BVnonzero 354 | BVXor (x_ 4614, x_4613, x_4612) -> h_BVXor x_4614 x_4613 x_4612355 | BVByte x_ 4615 -> h_BVByte x_4615356 | BVnull x_ 4616 -> h_BVnull x_4616357 | BVptr (x_ 4618, x_4617) -> h_BVptr x_4618 x_4617358 | BVpc (x_ 4620, x_4619) -> h_BVpc x_4620 x_4619356 | BVXor (x_6178, x_6177, x_6176) -> h_BVXor x_6178 x_6177 x_6176 357 | BVByte x_6179 -> h_BVByte x_6179 358 | BVnull x_6180 -> h_BVnull x_6180 359 | BVptr (x_6182, x_6181) -> h_BVptr x_6182 x_6181 360 | BVpc (x_6184, x_6183) -> h_BVpc x_6184 x_6183 359 361 360 362 (** val beval_rect_Type2 : … … 366 368 | BVundef -> h_BVundef 367 369 | BVnonzero -> h_BVnonzero 368 | BVXor (x_ 4631, x_4630, x_4629) -> h_BVXor x_4631 x_4630 x_4629369 | BVByte x_ 4632 -> h_BVByte x_4632370 | BVnull x_ 4633 -> h_BVnull x_4633371 | BVptr (x_ 4635, x_4634) -> h_BVptr x_4635 x_4634372 | BVpc (x_ 4637, x_4636) -> h_BVpc x_4637 x_4636370 | BVXor (x_6195, x_6194, x_6193) -> h_BVXor x_6195 x_6194 x_6193 371 | BVByte x_6196 -> h_BVByte x_6196 372 | BVnull x_6197 -> h_BVnull x_6197 373 | BVptr (x_6199, x_6198) -> h_BVptr x_6199 x_6198 374 | BVpc (x_6201, x_6200) -> h_BVpc x_6201 x_6200 373 375 374 376 (** val beval_rect_Type1 : … … 380 382 | BVundef -> h_BVundef 381 383 | BVnonzero -> h_BVnonzero 382 | BVXor (x_ 4648, x_4647, x_4646) -> h_BVXor x_4648 x_4647 x_4646383 | BVByte x_ 4649 -> h_BVByte x_4649384 | BVnull x_ 4650 -> h_BVnull x_4650385 | BVptr (x_ 4652, x_4651) -> h_BVptr x_4652 x_4651386 | BVpc (x_ 4654, x_4653) -> h_BVpc x_4654 x_4653384 | BVXor (x_6212, x_6211, x_6210) -> h_BVXor x_6212 x_6211 x_6210 385 | BVByte x_6213 -> h_BVByte x_6213 386 | BVnull x_6214 -> h_BVnull x_6214 387 | BVptr (x_6216, x_6215) -> h_BVptr x_6216 x_6215 388 | BVpc (x_6218, x_6217) -> h_BVpc x_6218 x_6217 387 389 388 390 (** val beval_rect_Type0 : … … 394 396 | BVundef -> h_BVundef 395 397 | BVnonzero -> h_BVnonzero 396 | BVXor (x_ 4665, x_4664, x_4663) -> h_BVXor x_4665 x_4664 x_4663397 | BVByte x_ 4666 -> h_BVByte x_4666398 | BVnull x_ 4667 -> h_BVnull x_4667399 | BVptr (x_ 4669, x_4668) -> h_BVptr x_4669 x_4668400 | BVpc (x_ 4671, x_4670) -> h_BVpc x_4671 x_4670398 | BVXor (x_6229, x_6228, x_6227) -> h_BVXor x_6229 x_6228 x_6227 399 | BVByte x_6230 -> h_BVByte x_6230 400 | BVnull x_6231 -> h_BVnull x_6231 401 | BVptr (x_6233, x_6232) -> h_BVptr x_6233 x_6232 402 | BVpc (x_6235, x_6234) -> h_BVpc x_6235 x_6234 401 403 402 404 (** val beval_inv_rect_Type4 : … … 737 739 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 738 740 let rec bebit_rect_Type4 h_BBbit h_BBundef h_BBptrcarry = function 739 | BBbit x_ 4790 -> h_BBbit x_4790741 | BBbit x_6354 -> h_BBbit x_6354 740 742 | BBundef -> h_BBundef 741 | BBptrcarry (x_ 4793, x_4792, p, x_4791) ->742 h_BBptrcarry x_ 4793 x_4792 p x_4791743 | BBptrcarry (x_6357, x_6356, p, x_6355) -> 744 h_BBptrcarry x_6357 x_6356 p x_6355 743 745 744 746 (** val bebit_rect_Type5 : … … 746 748 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 747 749 let rec bebit_rect_Type5 h_BBbit h_BBundef h_BBptrcarry = function 748 | BBbit x_ 4798 -> h_BBbit x_4798750 | BBbit x_6362 -> h_BBbit x_6362 749 751 | BBundef -> h_BBundef 750 | BBptrcarry (x_ 4801, x_4800, p, x_4799) ->751 h_BBptrcarry x_ 4801 x_4800 p x_4799752 | BBptrcarry (x_6365, x_6364, p, x_6363) -> 753 h_BBptrcarry x_6365 x_6364 p x_6363 752 754 753 755 (** val bebit_rect_Type3 : … … 755 757 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 756 758 let rec bebit_rect_Type3 h_BBbit h_BBundef h_BBptrcarry = function 757 | BBbit x_ 4806 -> h_BBbit x_4806759 | BBbit x_6370 -> h_BBbit x_6370 758 760 | BBundef -> h_BBundef 759 | BBptrcarry (x_ 4809, x_4808, p, x_4807) ->760 h_BBptrcarry x_ 4809 x_4808 p x_4807761 | BBptrcarry (x_6373, x_6372, p, x_6371) -> 762 h_BBptrcarry x_6373 x_6372 p x_6371 761 763 762 764 (** val bebit_rect_Type2 : … … 764 766 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 765 767 let rec bebit_rect_Type2 h_BBbit h_BBundef h_BBptrcarry = function 766 | BBbit x_ 4814 -> h_BBbit x_4814768 | BBbit x_6378 -> h_BBbit x_6378 767 769 | BBundef -> h_BBundef 768 | BBptrcarry (x_ 4817, x_4816, p, x_4815) ->769 h_BBptrcarry x_ 4817 x_4816 p x_4815770 | BBptrcarry (x_6381, x_6380, p, x_6379) -> 771 h_BBptrcarry x_6381 x_6380 p x_6379 770 772 771 773 (** val bebit_rect_Type1 : … … 773 775 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 774 776 let rec bebit_rect_Type1 h_BBbit h_BBundef h_BBptrcarry = function 775 | BBbit x_ 4822 -> h_BBbit x_4822777 | BBbit x_6386 -> h_BBbit x_6386 776 778 | BBundef -> h_BBundef 777 | BBptrcarry (x_ 4825, x_4824, p, x_4823) ->778 h_BBptrcarry x_ 4825 x_4824 p x_4823779 | BBptrcarry (x_6389, x_6388, p, x_6387) -> 780 h_BBptrcarry x_6389 x_6388 p x_6387 779 781 780 782 (** val bebit_rect_Type0 : … … 782 784 BitVector.bitVector -> 'a1) -> bebit -> 'a1 **) 783 785 let rec bebit_rect_Type0 h_BBbit h_BBundef h_BBptrcarry = function 784 | BBbit x_ 4830 -> h_BBbit x_4830786 | BBbit x_6394 -> h_BBbit x_6394 785 787 | BBundef -> h_BBundef 786 | BBptrcarry (x_ 4833, x_4832, p, x_4831) ->787 h_BBptrcarry x_ 4833 x_4832 p x_4831788 | BBptrcarry (x_6397, x_6396, p, x_6395) -> 789 h_BBptrcarry x_6397 x_6396 p x_6395 788 790 789 791 (** val bebit_inv_rect_Type4 : -
extracted/byteValues.mli
r2649 r2717 30 30 31 31 open Division 32 33 open Exp 32 34 33 35 open Arithmetic -
extracted/casts.ml
r2649 r2717 18 18 19 19 open Division 20 21 open Exp 20 22 21 23 open Arithmetic -
extracted/casts.mli
r2649 r2717 18 18 19 19 open Division 20 21 open Exp 20 22 21 23 open Arithmetic -
extracted/cexec.ml
r2649 r2717 29 29 open Extralib 30 30 31 open BitVectorTrie 32 31 33 open CostLabel 32 34 … … 44 46 45 47 open Division 48 49 open Exp 46 50 47 51 open Arithmetic … … 805 809 Obj.magic 806 810 (IO.ret { Types.fst = (Events.eapp tr2 tr3); Types.snd = 807 (Csem.Callstate ( fd, vargs, (Csem.Kcall (Types.None, f,808 e1, k)), m)) })811 (Csem.Callstate (vf, fd, vargs, (Csem.Kcall (Types.None, 812 f, e1, k)), m)) }) 809 813 | Types.Some lhs' -> 810 814 Monad.m_bind2 (Monad.max_def IOMonad.iOMonad) … … 814 818 (IO.ret { Types.fst = 815 819 (Events.eapp tr1 (Events.eapp tr2 tr3)); Types.snd = 816 (Csem.Callstate ( fd, vargs, (Csem.Kcall ((Types.Some817 { Types.fst = locofs; Types.snd =820 (Csem.Callstate (vf, fd, vargs, (Csem.Kcall 821 ((Types.Some { Types.fst = locofs; Types.snd = 818 822 (Csyntax.typeof lhs') }), f, e1, k)), m)) }))))))) 819 823 | Csyntax.Ssequence (s1, s2) -> … … 1035 1039 IO.ret { Types.fst = (Events.echarge lbl); Types.snd = (Csem.State (f, 1036 1040 s', k, e1, m)) }) 1037 | Csem.Callstate ( f0, vargs, k, m) ->1041 | Csem.Callstate (x, f0, vargs, k, m) -> 1038 1042 (match f0 with 1039 1043 | Csyntax.CL_Internal f -> … … 1044 1048 Obj.magic 1045 1049 (Monad.m_bind0 (Monad.max_def IOMonad.iOMonad) 1046 (let x =1050 (let x0 = 1047 1051 IOMonad.err_to_io 1048 1052 (exec_bind_parameters e1 m1 f.Csyntax.fn_params vargs) 1049 1053 in 1050 Obj.magic x ) (fun m2 ->1054 Obj.magic x0) (fun m2 -> 1051 1055 Obj.magic 1052 1056 (IO.ret { Types.fst = Events.e0; Types.snd = (Csem.State (f, … … 1055 1059 Obj.magic 1056 1060 (Monad.m_bind0 (Monad.max_def IOMonad.iOMonad) 1057 (let x =1061 (let x0 = 1058 1062 IOMonad.err_to_io 1059 1063 (IO.check_eventval_list vargs 1060 1064 (Csyntax.typlist_of_typelist argtys)) 1061 1065 in 1062 Obj.magic x ) (fun evargs ->1066 Obj.magic x0) (fun evargs -> 1063 1067 Monad.m_bind0 (Monad.max_def IOMonad.iOMonad) 1064 1068 (Obj.magic … … 1143 1147 (Errors.opt_to_res (Errors.msg ErrorMessages.MainMissing) 1144 1148 (Globalenvs.find_funct_ptr ge0 b))) (fun f -> 1145 Obj.magic (Errors.OK (Csem.Callstate (f, List.Nil, Csem.Kstop, 1146 m0))))))) 1149 Obj.magic (Errors.OK (Csem.Callstate ((Values.Vptr 1150 { Pointers.pblock = b; Pointers.poff = Pointers.zero_offset }), 1151 f, List.Nil, Csem.Kstop, m0))))))) 1147 1152 1148 1153 (** val is_final0 : Csem.state0 -> Integers.int Types.option **) 1149 1154 let rec is_final0 = function 1150 1155 | Csem.State (x, x0, x1, x2, x3) -> Types.None 1151 | Csem.Callstate (x, x0, x1, x2 ) -> Types.None1156 | Csem.Callstate (x, x0, x1, x2, x3) -> Types.None 1152 1157 | Csem.Returnstate (x, x0, x1) -> Types.None 1153 1158 | Csem.Finalstate r -> Types.Some r … … 1156 1161 Csem.state0 -> (Integers.int Types.sig0, __) Types.sum **) 1157 1162 let is_final_state st = 1158 Csem.state_rect_Type0 (fun f s k e1 m -> Types.Inr __) (fun f l k m ->1163 Csem.state_rect_Type0 (fun f s k e1 m -> Types.Inr __) (fun vf f l k m -> 1159 1164 Types.Inr __) (fun v k m -> Types.Inr __) (fun r -> Types.Inl r) st 1160 1165 1161 (** val exec_steps :1166 (** val exec_steps0 : 1162 1167 Nat.nat -> Csem.genv0 -> Csem.state0 -> (IO.io_out, IO.io_in, 1163 1168 (Events.trace, Csem.state0) Types.prod) IOMonad.iO **) 1164 let rec exec_steps n ge0 s =1169 let rec exec_steps0 n ge0 s = 1165 1170 match is_final_state s with 1166 1171 | Types.Inl x -> IO.ret { Types.fst = Events.e0; Types.snd = s } … … 1173 1178 (Obj.magic (exec_step ge0 s)) (fun t s' -> 1174 1179 Monad.m_bind2 (Monad.max_def IOMonad.iOMonad) 1175 (Obj.magic (exec_steps n' ge0 s')) (fun t' s'' ->1180 (Obj.magic (exec_steps0 n' ge0 s')) (fun t' s'' -> 1176 1181 Obj.magic 1177 1182 (IO.ret { Types.fst = (Events.eapp t t'); Types.snd = s'' }))))) -
extracted/cexec.mli
r2649 r2717 29 29 open Extralib 30 30 31 open BitVectorTrie 32 31 33 open CostLabel 32 34 … … 44 46 45 47 open Division 48 49 open Exp 46 50 47 51 open Arithmetic … … 174 178 val is_final_state : Csem.state0 -> (Integers.int Types.sig0, __) Types.sum 175 179 176 val exec_steps :180 val exec_steps0 : 177 181 Nat.nat -> Csem.genv0 -> Csem.state0 -> (IO.io_out, IO.io_in, 178 182 (Events.trace, Csem.state0) Types.prod) IOMonad.iO -
extracted/cexecInd.ml
r2649 r2717 1 1 open Preamble 2 3 open BitVectorTrie 2 4 3 5 open CostLabel … … 30 32 31 33 open Identifiers 34 35 open Exp 32 36 33 37 open Arithmetic -
extracted/cexecInd.mli
r2649 r2717 1 1 open Preamble 2 3 open BitVectorTrie 2 4 3 5 open CostLabel … … 30 32 31 33 open Identifiers 34 35 open Exp 32 36 33 37 open Arithmetic -
extracted/cexecSound.ml
r2649 r2717 27 27 open SmallstepExec 28 28 29 open BitVectorTrie 30 29 31 open CostLabel 30 32 … … 42 44 43 45 open Division 46 47 open Exp 44 48 45 49 open Arithmetic -
extracted/cexecSound.mli
r2649 r2717 27 27 open SmallstepExec 28 28 29 open BitVectorTrie 30 29 31 open CostLabel 30 32 … … 42 44 43 45 open Division 46 47 open Exp 44 48 45 49 open Arithmetic -
extracted/classifyOp.ml
r2649 r2717 1 1 open Preamble 2 2 3 open BitVectorTrie 4 3 5 open CostLabel 4 6 … … 30 32 31 33 open Identifiers 34 35 open Exp 32 36 33 37 open Arithmetic … … 94 98 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 95 99 -> classify_add_cases -> 'a1 **) 96 let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3395 x_3394= function100 let rec classify_add_cases_rect_Type4 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7324 x_7323 = function 97 101 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 98 102 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 106 110 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 107 111 -> classify_add_cases -> 'a1 **) 108 let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3402 x_3401= function112 let rec classify_add_cases_rect_Type5 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7331 x_7330 = function 109 113 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 110 114 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 118 122 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 119 123 -> classify_add_cases -> 'a1 **) 120 let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3409 x_3408= function124 let rec classify_add_cases_rect_Type3 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7338 x_7337 = function 121 125 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 122 126 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 130 134 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 131 135 -> classify_add_cases -> 'a1 **) 132 let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3416 x_3415= function136 let rec classify_add_cases_rect_Type2 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7345 x_7344 = function 133 137 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 134 138 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 142 146 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 143 147 -> classify_add_cases -> 'a1 **) 144 let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3423 x_3422= function148 let rec classify_add_cases_rect_Type1 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7352 x_7351 = function 145 149 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 146 150 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 154 158 (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 155 159 -> classify_add_cases -> 'a1 **) 156 let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_ 3430 x_3429= function160 let rec classify_add_cases_rect_Type0 h_add_case_ii h_add_case_pi h_add_case_ip h_add_default x_7359 x_7358 = function 157 161 | Add_case_ii (sz, sg) -> h_add_case_ii sz sg 158 162 | Add_case_pi (n, ty, sz, sg) -> h_add_case_pi n ty sz sg … … 317 321 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 318 322 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 319 let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3486 x_3485= function323 let rec classify_sub_cases_rect_Type4 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7415 x_7414 = function 320 324 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 321 325 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 329 333 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 330 334 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 331 let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3493 x_3492= function335 let rec classify_sub_cases_rect_Type5 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7422 x_7421 = function 332 336 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 333 337 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 341 345 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 342 346 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 343 let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3500 x_3499= function347 let rec classify_sub_cases_rect_Type3 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7429 x_7428 = function 344 348 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 345 349 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 353 357 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 354 358 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 355 let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3507 x_3506= function359 let rec classify_sub_cases_rect_Type2 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7436 x_7435 = function 356 360 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 357 361 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 365 369 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 366 370 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 367 let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3514 x_3513= function371 let rec classify_sub_cases_rect_Type1 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7443 x_7442 = function 368 372 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 369 373 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 377 381 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> Csyntax.type0 -> 378 382 Csyntax.type0 -> classify_sub_cases -> 'a1 **) 379 let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_ 3521 x_3520= function383 let rec classify_sub_cases_rect_Type0 h_sub_case_ii h_sub_case_pi h_sub_case_pp h_sub_default x_7450 x_7449 = function 380 384 | Sub_case_ii (sz, sg) -> h_sub_case_ii sz sg 381 385 | Sub_case_pi (n, ty, sz, sg) -> h_sub_case_pi n ty sz sg … … 517 521 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 518 522 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 519 let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_ 3575 x_3574= function523 let rec classify_aop_cases_rect_Type4 h_aop_case_ii h_aop_default x_7504 x_7503 = function 520 524 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 521 525 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 524 528 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 525 529 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 526 let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_ 3580 x_3579= function530 let rec classify_aop_cases_rect_Type5 h_aop_case_ii h_aop_default x_7509 x_7508 = function 527 531 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 528 532 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 531 535 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 532 536 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 533 let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_ 3585 x_3584= function537 let rec classify_aop_cases_rect_Type3 h_aop_case_ii h_aop_default x_7514 x_7513 = function 534 538 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 535 539 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 538 542 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 539 543 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 540 let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_ 3590 x_3589= function544 let rec classify_aop_cases_rect_Type2 h_aop_case_ii h_aop_default x_7519 x_7518 = function 541 545 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 542 546 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 545 549 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 546 550 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 547 let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_ 3595 x_3594= function551 let rec classify_aop_cases_rect_Type1 h_aop_case_ii h_aop_default x_7524 x_7523 = function 548 552 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 549 553 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 552 556 (AST.intsize -> AST.signedness -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 553 557 -> 'a1) -> Csyntax.type0 -> Csyntax.type0 -> classify_aop_cases -> 'a1 **) 554 let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_ 3600 x_3599= function558 let rec classify_aop_cases_rect_Type0 h_aop_case_ii h_aop_default x_7529 x_7528 = function 555 559 | Aop_case_ii (sz, sg) -> h_aop_case_ii sz sg 556 560 | Aop_default (ty, ty') -> h_aop_default ty ty' … … 634 638 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 635 639 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 636 let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3641 x_3640= function640 let rec classify_cmp_cases_rect_Type4 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7570 x_7569 = function 637 641 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 638 642 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 643 647 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 644 648 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 645 let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3647 x_3646= function649 let rec classify_cmp_cases_rect_Type5 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7576 x_7575 = function 646 650 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 647 651 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 652 656 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 653 657 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 654 let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3653 x_3652= function658 let rec classify_cmp_cases_rect_Type3 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7582 x_7581 = function 655 659 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 656 660 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 661 665 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 662 666 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 663 let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3659 x_3658= function667 let rec classify_cmp_cases_rect_Type2 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7588 x_7587 = function 664 668 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 665 669 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 670 674 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 671 675 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 672 let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3665 x_3664= function676 let rec classify_cmp_cases_rect_Type1 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7594 x_7593 = function 673 677 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 674 678 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 679 683 Csyntax.type0 -> 'a1) -> (Csyntax.type0 -> Csyntax.type0 -> 'a1) -> 680 684 Csyntax.type0 -> Csyntax.type0 -> classify_cmp_cases -> 'a1 **) 681 let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_ 3671 x_3670= function685 let rec classify_cmp_cases_rect_Type0 h_cmp_case_ii h_cmp_case_pp h_cmp_default x_7600 x_7599 = function 682 686 | Cmp_case_ii (sz, sg) -> h_cmp_case_ii sz sg 683 687 | Cmp_case_pp (n, ty) -> h_cmp_case_pp n ty … … 778 782 -> 'a1 **) 779 783 let rec classify_fun_cases_rect_Type4 h_fun_case_f h_fun_default = function 780 | Fun_case_f (x_ 3719, x_3718) -> h_fun_case_f x_3719 x_3718784 | Fun_case_f (x_7648, x_7647) -> h_fun_case_f x_7648 x_7647 781 785 | Fun_default -> h_fun_default 782 786 … … 785 789 -> 'a1 **) 786 790 let rec classify_fun_cases_rect_Type5 h_fun_case_f h_fun_default = function 787 | Fun_case_f (x_ 3724, x_3723) -> h_fun_case_f x_3724 x_3723791 | Fun_case_f (x_7653, x_7652) -> h_fun_case_f x_7653 x_7652 788 792 | Fun_default -> h_fun_default 789 793 … … 792 796 -> 'a1 **) 793 797 let rec classify_fun_cases_rect_Type3 h_fun_case_f h_fun_default = function 794 | Fun_case_f (x_ 3729, x_3728) -> h_fun_case_f x_3729 x_3728798 | Fun_case_f (x_7658, x_7657) -> h_fun_case_f x_7658 x_7657 795 799 | Fun_default -> h_fun_default 796 800 … … 799 803 -> 'a1 **) 800 804 let rec classify_fun_cases_rect_Type2 h_fun_case_f h_fun_default = function 801 | Fun_case_f (x_ 3734, x_3733) -> h_fun_case_f x_3734 x_3733805 | Fun_case_f (x_7663, x_7662) -> h_fun_case_f x_7663 x_7662 802 806 | Fun_default -> h_fun_default 803 807 … … 806 810 -> 'a1 **) 807 811 let rec classify_fun_cases_rect_Type1 h_fun_case_f h_fun_default = function 808 | Fun_case_f (x_ 3739, x_3738) -> h_fun_case_f x_3739 x_3738812 | Fun_case_f (x_7668, x_7667) -> h_fun_case_f x_7668 x_7667 809 813 | Fun_default -> h_fun_default 810 814 … … 813 817 -> 'a1 **) 814 818 let rec classify_fun_cases_rect_Type0 h_fun_case_f h_fun_default = function 815 | Fun_case_f (x_ 3744, x_3743) -> h_fun_case_f x_3744 x_3743819 | Fun_case_f (x_7673, x_7672) -> h_fun_case_f x_7673 x_7672 816 820 | Fun_default -> h_fun_default 817 821 -
extracted/classifyOp.mli
r2649 r2717 1 1 open Preamble 2 2 3 open BitVectorTrie 4 3 5 open CostLabel 4 6 … … 30 32 31 33 open Identifiers 34 35 open Exp 32 36 33 37 open Arithmetic -
extracted/cminor_syntax.ml
r2649 r2717 29 29 open Division 30 30 31 open Exp 32 31 33 open Arithmetic 32 34 … … 90 92 91 93 open FrontEndOps 94 95 open BitVectorTrie 92 96 93 97 open CostLabel … … 111 115 -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1 112 116 -> 'a1) -> AST.typ -> expr -> 'a1 **) 113 let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_1 0365= function114 | Id (t, x_1 0367) -> h_Id t x_10367115 | Cst (t, x_1 0368) -> h_Cst t x_10368116 | Op1 (t, t', x_1 0370, x_10369) ->117 h_Op1 t t' x_1 0370 x_10369118 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0369)119 | Op2 (t1, t2, t', x_1 0373, x_10372, x_10371) ->120 h_Op2 t1 t2 t' x_1 0373 x_10372 x_10371121 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_1 0372)122 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_1 0371)123 | Mem (t, x_1 0374) ->124 h_Mem t x_1 0374117 let rec expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13681 = function 118 | Id (t, x_13683) -> h_Id t x_13683 119 | Cst (t, x_13684) -> h_Cst t x_13684 120 | Op1 (t, t', x_13686, x_13685) -> 121 h_Op1 t t' x_13686 x_13685 122 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13685) 123 | Op2 (t1, t2, t', x_13689, x_13688, x_13687) -> 124 h_Op2 t1 t2 t' x_13689 x_13688 x_13687 125 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13688) 126 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13687) 127 | Mem (t, x_13690) -> 128 h_Mem t x_13690 125 129 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr 126 x_1 0374)127 | Cond (sz, sg, t, x_1 0377, x_10376, x_10375) ->128 h_Cond sz sg t x_1 0377 x_10376 x_10375130 x_13690) 131 | Cond (sz, sg, t, x_13693, x_13692, x_13691) -> 132 h_Cond sz sg t x_13693 x_13692 x_13691 129 133 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint 130 (sz, sg)) x_1 0377)131 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0376)132 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0375)133 | Ecost (t, x_1 0379, x_10378) ->134 h_Ecost t x_1 0379 x_10378135 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0378)134 (sz, sg)) x_13693) 135 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13692) 136 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13691) 137 | Ecost (t, x_13695, x_13694) -> 138 h_Ecost t x_13695 x_13694 139 (expr_rect_Type4 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13694) 136 140 137 141 (** val expr_rect_Type3 : … … 143 147 -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1 144 148 -> 'a1) -> AST.typ -> expr -> 'a1 **) 145 let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_1 0409= function146 | Id (t, x_1 0411) -> h_Id t x_10411147 | Cst (t, x_1 0412) -> h_Cst t x_10412148 | Op1 (t, t', x_1 0414, x_10413) ->149 h_Op1 t t' x_1 0414 x_10413150 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0413)151 | Op2 (t1, t2, t', x_1 0417, x_10416, x_10415) ->152 h_Op2 t1 t2 t' x_1 0417 x_10416 x_10415153 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_1 0416)154 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_1 0415)155 | Mem (t, x_1 0418) ->156 h_Mem t x_1 0418149 let rec expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13725 = function 150 | Id (t, x_13727) -> h_Id t x_13727 151 | Cst (t, x_13728) -> h_Cst t x_13728 152 | Op1 (t, t', x_13730, x_13729) -> 153 h_Op1 t t' x_13730 x_13729 154 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13729) 155 | Op2 (t1, t2, t', x_13733, x_13732, x_13731) -> 156 h_Op2 t1 t2 t' x_13733 x_13732 x_13731 157 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13732) 158 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13731) 159 | Mem (t, x_13734) -> 160 h_Mem t x_13734 157 161 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr 158 x_1 0418)159 | Cond (sz, sg, t, x_1 0421, x_10420, x_10419) ->160 h_Cond sz sg t x_1 0421 x_10420 x_10419162 x_13734) 163 | Cond (sz, sg, t, x_13737, x_13736, x_13735) -> 164 h_Cond sz sg t x_13737 x_13736 x_13735 161 165 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint 162 (sz, sg)) x_1 0421)163 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0420)164 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0419)165 | Ecost (t, x_1 0423, x_10422) ->166 h_Ecost t x_1 0423 x_10422167 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0422)166 (sz, sg)) x_13737) 167 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13736) 168 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13735) 169 | Ecost (t, x_13739, x_13738) -> 170 h_Ecost t x_13739 x_13738 171 (expr_rect_Type3 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13738) 168 172 169 173 (** val expr_rect_Type2 : … … 175 179 -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1 176 180 -> 'a1) -> AST.typ -> expr -> 'a1 **) 177 let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_1 0431= function178 | Id (t, x_1 0433) -> h_Id t x_10433179 | Cst (t, x_1 0434) -> h_Cst t x_10434180 | Op1 (t, t', x_1 0436, x_10435) ->181 h_Op1 t t' x_1 0436 x_10435182 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0435)183 | Op2 (t1, t2, t', x_1 0439, x_10438, x_10437) ->184 h_Op2 t1 t2 t' x_1 0439 x_10438 x_10437185 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_1 0438)186 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_1 0437)187 | Mem (t, x_1 0440) ->188 h_Mem t x_1 0440181 let rec expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13747 = function 182 | Id (t, x_13749) -> h_Id t x_13749 183 | Cst (t, x_13750) -> h_Cst t x_13750 184 | Op1 (t, t', x_13752, x_13751) -> 185 h_Op1 t t' x_13752 x_13751 186 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13751) 187 | Op2 (t1, t2, t', x_13755, x_13754, x_13753) -> 188 h_Op2 t1 t2 t' x_13755 x_13754 x_13753 189 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13754) 190 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13753) 191 | Mem (t, x_13756) -> 192 h_Mem t x_13756 189 193 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr 190 x_1 0440)191 | Cond (sz, sg, t, x_1 0443, x_10442, x_10441) ->192 h_Cond sz sg t x_1 0443 x_10442 x_10441194 x_13756) 195 | Cond (sz, sg, t, x_13759, x_13758, x_13757) -> 196 h_Cond sz sg t x_13759 x_13758 x_13757 193 197 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint 194 (sz, sg)) x_1 0443)195 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0442)196 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0441)197 | Ecost (t, x_1 0445, x_10444) ->198 h_Ecost t x_1 0445 x_10444199 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0444)198 (sz, sg)) x_13759) 199 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13758) 200 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13757) 201 | Ecost (t, x_13761, x_13760) -> 202 h_Ecost t x_13761 x_13760 203 (expr_rect_Type2 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13760) 200 204 201 205 (** val expr_rect_Type1 : … … 207 211 -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1 208 212 -> 'a1) -> AST.typ -> expr -> 'a1 **) 209 let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_1 0453= function210 | Id (t, x_1 0455) -> h_Id t x_10455211 | Cst (t, x_1 0456) -> h_Cst t x_10456212 | Op1 (t, t', x_1 0458, x_10457) ->213 h_Op1 t t' x_1 0458 x_10457214 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0457)215 | Op2 (t1, t2, t', x_1 0461, x_10460, x_10459) ->216 h_Op2 t1 t2 t' x_1 0461 x_10460 x_10459217 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_1 0460)218 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_1 0459)219 | Mem (t, x_1 0462) ->220 h_Mem t x_1 0462213 let rec expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13769 = function 214 | Id (t, x_13771) -> h_Id t x_13771 215 | Cst (t, x_13772) -> h_Cst t x_13772 216 | Op1 (t, t', x_13774, x_13773) -> 217 h_Op1 t t' x_13774 x_13773 218 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13773) 219 | Op2 (t1, t2, t', x_13777, x_13776, x_13775) -> 220 h_Op2 t1 t2 t' x_13777 x_13776 x_13775 221 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13776) 222 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13775) 223 | Mem (t, x_13778) -> 224 h_Mem t x_13778 221 225 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr 222 x_1 0462)223 | Cond (sz, sg, t, x_1 0465, x_10464, x_10463) ->224 h_Cond sz sg t x_1 0465 x_10464 x_10463226 x_13778) 227 | Cond (sz, sg, t, x_13781, x_13780, x_13779) -> 228 h_Cond sz sg t x_13781 x_13780 x_13779 225 229 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint 226 (sz, sg)) x_1 0465)227 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0464)228 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0463)229 | Ecost (t, x_1 0467, x_10466) ->230 h_Ecost t x_1 0467 x_10466231 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0466)230 (sz, sg)) x_13781) 231 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13780) 232 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13779) 233 | Ecost (t, x_13783, x_13782) -> 234 h_Ecost t x_13783 x_13782 235 (expr_rect_Type1 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13782) 232 236 233 237 (** val expr_rect_Type0 : … … 239 243 -> 'a1 -> 'a1 -> 'a1) -> (AST.typ -> CostLabel.costlabel -> expr -> 'a1 240 244 -> 'a1) -> AST.typ -> expr -> 'a1 **) 241 let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_1 0475= function242 | Id (t, x_1 0477) -> h_Id t x_10477243 | Cst (t, x_1 0478) -> h_Cst t x_10478244 | Op1 (t, t', x_1 0480, x_10479) ->245 h_Op1 t t' x_1 0480 x_10479246 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0479)247 | Op2 (t1, t2, t', x_1 0483, x_10482, x_10481) ->248 h_Op2 t1 t2 t' x_1 0483 x_10482 x_10481249 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_1 0482)250 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_1 0481)251 | Mem (t, x_1 0484) ->252 h_Mem t x_1 0484245 let rec expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost x_13791 = function 246 | Id (t, x_13793) -> h_Id t x_13793 247 | Cst (t, x_13794) -> h_Cst t x_13794 248 | Op1 (t, t', x_13796, x_13795) -> 249 h_Op1 t t' x_13796 x_13795 250 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13795) 251 | Op2 (t1, t2, t', x_13799, x_13798, x_13797) -> 252 h_Op2 t1 t2 t' x_13799 x_13798 x_13797 253 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t1 x_13798) 254 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t2 x_13797) 255 | Mem (t, x_13800) -> 256 h_Mem t x_13800 253 257 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost AST.ASTptr 254 x_1 0484)255 | Cond (sz, sg, t, x_1 0487, x_10486, x_10485) ->256 h_Cond sz sg t x_1 0487 x_10486 x_10485258 x_13800) 259 | Cond (sz, sg, t, x_13803, x_13802, x_13801) -> 260 h_Cond sz sg t x_13803 x_13802 x_13801 257 261 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost (AST.ASTint 258 (sz, sg)) x_1 0487)259 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0486)260 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0485)261 | Ecost (t, x_1 0489, x_10488) ->262 h_Ecost t x_1 0489 x_10488263 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_1 0488)262 (sz, sg)) x_13803) 263 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13802) 264 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13801) 265 | Ecost (t, x_13805, x_13804) -> 266 h_Ecost t x_13805 x_13804 267 (expr_rect_Type0 h_Id h_Cst h_Op1 h_Op2 h_Mem h_Cond h_Ecost t x_13804) 264 268 265 269 (** val expr_inv_rect_Type4 : … … 373 377 let rec stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function 374 378 | St_skip -> h_St_skip 375 | St_assign (t, x_1 0660, x_10659) -> h_St_assign t x_10660 x_10659376 | St_store (t, x_1 0662, x_10661) -> h_St_store t x_10662 x_10661377 | St_call (x_1 0665, x_10664, x_10663) -> h_St_call x_10665 x_10664 x_10663378 | St_seq (x_1 0667, x_10666) ->379 h_St_seq x_1 0667 x_10666379 | St_assign (t, x_13976, x_13975) -> h_St_assign t x_13976 x_13975 380 | St_store (t, x_13978, x_13977) -> h_St_store t x_13978 x_13977 381 | St_call (x_13981, x_13980, x_13979) -> h_St_call x_13981 x_13980 x_13979 382 | St_seq (x_13983, x_13982) -> 383 h_St_seq x_13983 x_13982 380 384 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 381 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0667)385 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13983) 382 386 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 383 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0666)384 | St_ifthenelse (sz, sg, x_1 0670, x_10669, x_10668) ->385 h_St_ifthenelse sz sg x_1 0670 x_10669 x_10668387 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13982) 388 | St_ifthenelse (sz, sg, x_13986, x_13985, x_13984) -> 389 h_St_ifthenelse sz sg x_13986 x_13985 x_13984 386 390 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 387 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0669)391 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13985) 388 392 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 389 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0668)390 | St_return x_1 0671 -> h_St_return x_10671391 | St_label (x_1 0673, x_10672) ->392 h_St_label x_1 0673 x_10672393 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13984) 394 | St_return x_13987 -> h_St_return x_13987 395 | St_label (x_13989, x_13988) -> 396 h_St_label x_13989 x_13988 393 397 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 394 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0672)395 | St_goto x_1 0674 -> h_St_goto x_10674396 | St_cost (x_1 0676, x_10675) ->397 h_St_cost x_1 0676 x_10675398 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13988) 399 | St_goto x_13990 -> h_St_goto x_13990 400 | St_cost (x_13992, x_13991) -> 401 h_St_cost x_13992 x_13991 398 402 (stmt_rect_Type4 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 399 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0675)403 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_13991) 400 404 401 405 (** val stmt_rect_Type3 : … … 410 414 let rec stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function 411 415 | St_skip -> h_St_skip 412 | St_assign (t, x_1 0718, x_10717) -> h_St_assign t x_10718 x_10717413 | St_store (t, x_1 0720, x_10719) -> h_St_store t x_10720 x_10719414 | St_call (x_1 0723, x_10722, x_10721) -> h_St_call x_10723 x_10722 x_10721415 | St_seq (x_1 0725, x_10724) ->416 h_St_seq x_1 0725 x_10724416 | St_assign (t, x_14034, x_14033) -> h_St_assign t x_14034 x_14033 417 | St_store (t, x_14036, x_14035) -> h_St_store t x_14036 x_14035 418 | St_call (x_14039, x_14038, x_14037) -> h_St_call x_14039 x_14038 x_14037 419 | St_seq (x_14041, x_14040) -> 420 h_St_seq x_14041 x_14040 417 421 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 418 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0725)422 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14041) 419 423 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 420 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0724)421 | St_ifthenelse (sz, sg, x_1 0728, x_10727, x_10726) ->422 h_St_ifthenelse sz sg x_1 0728 x_10727 x_10726424 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14040) 425 | St_ifthenelse (sz, sg, x_14044, x_14043, x_14042) -> 426 h_St_ifthenelse sz sg x_14044 x_14043 x_14042 423 427 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 424 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0727)428 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14043) 425 429 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 426 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0726)427 | St_return x_1 0729 -> h_St_return x_10729428 | St_label (x_1 0731, x_10730) ->429 h_St_label x_1 0731 x_10730430 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14042) 431 | St_return x_14045 -> h_St_return x_14045 432 | St_label (x_14047, x_14046) -> 433 h_St_label x_14047 x_14046 430 434 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 431 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0730)432 | St_goto x_1 0732 -> h_St_goto x_10732433 | St_cost (x_1 0734, x_10733) ->434 h_St_cost x_1 0734 x_10733435 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14046) 436 | St_goto x_14048 -> h_St_goto x_14048 437 | St_cost (x_14050, x_14049) -> 438 h_St_cost x_14050 x_14049 435 439 (stmt_rect_Type3 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 436 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0733)440 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14049) 437 441 438 442 (** val stmt_rect_Type2 : … … 447 451 let rec stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function 448 452 | St_skip -> h_St_skip 449 | St_assign (t, x_1 0747, x_10746) -> h_St_assign t x_10747 x_10746450 | St_store (t, x_1 0749, x_10748) -> h_St_store t x_10749 x_10748451 | St_call (x_1 0752, x_10751, x_10750) -> h_St_call x_10752 x_10751 x_10750452 | St_seq (x_1 0754, x_10753) ->453 h_St_seq x_1 0754 x_10753453 | St_assign (t, x_14063, x_14062) -> h_St_assign t x_14063 x_14062 454 | St_store (t, x_14065, x_14064) -> h_St_store t x_14065 x_14064 455 | St_call (x_14068, x_14067, x_14066) -> h_St_call x_14068 x_14067 x_14066 456 | St_seq (x_14070, x_14069) -> 457 h_St_seq x_14070 x_14069 454 458 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 455 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0754)459 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14070) 456 460 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 457 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0753)458 | St_ifthenelse (sz, sg, x_1 0757, x_10756, x_10755) ->459 h_St_ifthenelse sz sg x_1 0757 x_10756 x_10755461 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14069) 462 | St_ifthenelse (sz, sg, x_14073, x_14072, x_14071) -> 463 h_St_ifthenelse sz sg x_14073 x_14072 x_14071 460 464 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 461 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0756)465 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14072) 462 466 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 463 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0755)464 | St_return x_1 0758 -> h_St_return x_10758465 | St_label (x_1 0760, x_10759) ->466 h_St_label x_1 0760 x_10759467 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14071) 468 | St_return x_14074 -> h_St_return x_14074 469 | St_label (x_14076, x_14075) -> 470 h_St_label x_14076 x_14075 467 471 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 468 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0759)469 | St_goto x_1 0761 -> h_St_goto x_10761470 | St_cost (x_1 0763, x_10762) ->471 h_St_cost x_1 0763 x_10762472 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14075) 473 | St_goto x_14077 -> h_St_goto x_14077 474 | St_cost (x_14079, x_14078) -> 475 h_St_cost x_14079 x_14078 472 476 (stmt_rect_Type2 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 473 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0762)477 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14078) 474 478 475 479 (** val stmt_rect_Type1 : … … 484 488 let rec stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function 485 489 | St_skip -> h_St_skip 486 | St_assign (t, x_1 0776, x_10775) -> h_St_assign t x_10776 x_10775487 | St_store (t, x_1 0778, x_10777) -> h_St_store t x_10778 x_10777488 | St_call (x_1 0781, x_10780, x_10779) -> h_St_call x_10781 x_10780 x_10779489 | St_seq (x_1 0783, x_10782) ->490 h_St_seq x_1 0783 x_10782490 | St_assign (t, x_14092, x_14091) -> h_St_assign t x_14092 x_14091 491 | St_store (t, x_14094, x_14093) -> h_St_store t x_14094 x_14093 492 | St_call (x_14097, x_14096, x_14095) -> h_St_call x_14097 x_14096 x_14095 493 | St_seq (x_14099, x_14098) -> 494 h_St_seq x_14099 x_14098 491 495 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 492 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0783)496 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14099) 493 497 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 494 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0782)495 | St_ifthenelse (sz, sg, x_1 0786, x_10785, x_10784) ->496 h_St_ifthenelse sz sg x_1 0786 x_10785 x_10784498 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14098) 499 | St_ifthenelse (sz, sg, x_14102, x_14101, x_14100) -> 500 h_St_ifthenelse sz sg x_14102 x_14101 x_14100 497 501 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 498 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0785)502 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14101) 499 503 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 500 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0784)501 | St_return x_1 0787 -> h_St_return x_10787502 | St_label (x_1 0789, x_10788) ->503 h_St_label x_1 0789 x_10788504 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14100) 505 | St_return x_14103 -> h_St_return x_14103 506 | St_label (x_14105, x_14104) -> 507 h_St_label x_14105 x_14104 504 508 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 505 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0788)506 | St_goto x_1 0790 -> h_St_goto x_10790507 | St_cost (x_1 0792, x_10791) ->508 h_St_cost x_1 0792 x_10791509 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14104) 510 | St_goto x_14106 -> h_St_goto x_14106 511 | St_cost (x_14108, x_14107) -> 512 h_St_cost x_14108 x_14107 509 513 (stmt_rect_Type1 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 510 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0791)514 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14107) 511 515 512 516 (** val stmt_rect_Type0 : … … 521 525 let rec stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost = function 522 526 | St_skip -> h_St_skip 523 | St_assign (t, x_1 0805, x_10804) -> h_St_assign t x_10805 x_10804524 | St_store (t, x_1 0807, x_10806) -> h_St_store t x_10807 x_10806525 | St_call (x_1 0810, x_10809, x_10808) -> h_St_call x_10810 x_10809 x_10808526 | St_seq (x_1 0812, x_10811) ->527 h_St_seq x_1 0812 x_10811527 | St_assign (t, x_14121, x_14120) -> h_St_assign t x_14121 x_14120 528 | St_store (t, x_14123, x_14122) -> h_St_store t x_14123 x_14122 529 | St_call (x_14126, x_14125, x_14124) -> h_St_call x_14126 x_14125 x_14124 530 | St_seq (x_14128, x_14127) -> 531 h_St_seq x_14128 x_14127 528 532 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 529 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0812)533 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14128) 530 534 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 531 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0811)532 | St_ifthenelse (sz, sg, x_1 0815, x_10814, x_10813) ->533 h_St_ifthenelse sz sg x_1 0815 x_10814 x_10813535 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14127) 536 | St_ifthenelse (sz, sg, x_14131, x_14130, x_14129) -> 537 h_St_ifthenelse sz sg x_14131 x_14130 x_14129 534 538 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 535 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0814)539 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14130) 536 540 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 537 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0813)538 | St_return x_1 0816 -> h_St_return x_10816539 | St_label (x_1 0818, x_10817) ->540 h_St_label x_1 0818 x_10817541 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14129) 542 | St_return x_14132 -> h_St_return x_14132 543 | St_label (x_14134, x_14133) -> 544 h_St_label x_14134 x_14133 541 545 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 542 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0817)543 | St_goto x_1 0819 -> h_St_goto x_10819544 | St_cost (x_1 0821, x_10820) ->545 h_St_cost x_1 0821 x_10820546 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14133) 547 | St_goto x_14135 -> h_St_goto x_14135 548 | St_cost (x_14137, x_14136) -> 549 h_St_cost x_14137 x_14136 546 550 (stmt_rect_Type0 h_St_skip h_St_assign h_St_store h_St_call h_St_seq 547 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_1 0820)551 h_St_ifthenelse h_St_return h_St_label h_St_goto h_St_cost x_14136) 548 552 549 553 (** val stmt_inv_rect_Type4 : … … 759 763 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 760 764 -> 'a1) -> internal_function -> 'a1 **) 761 let rec internal_function_rect_Type4 h_mk_internal_function x_1 1116=765 let rec internal_function_rect_Type4 h_mk_internal_function x_14432 = 762 766 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 763 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1116767 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14432 764 768 in 765 769 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 … … 770 774 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 771 775 -> 'a1) -> internal_function -> 'a1 **) 772 let rec internal_function_rect_Type5 h_mk_internal_function x_1 1118=776 let rec internal_function_rect_Type5 h_mk_internal_function x_14434 = 773 777 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 774 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1118778 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14434 775 779 in 776 780 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 … … 781 785 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 782 786 -> 'a1) -> internal_function -> 'a1 **) 783 let rec internal_function_rect_Type3 h_mk_internal_function x_1 1120=787 let rec internal_function_rect_Type3 h_mk_internal_function x_14436 = 784 788 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 785 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1120789 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14436 786 790 in 787 791 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 … … 792 796 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 793 797 -> 'a1) -> internal_function -> 'a1 **) 794 let rec internal_function_rect_Type2 h_mk_internal_function x_1 1122=798 let rec internal_function_rect_Type2 h_mk_internal_function x_14438 = 795 799 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 796 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1122800 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14438 797 801 in 798 802 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 … … 803 807 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 804 808 -> 'a1) -> internal_function -> 'a1 **) 805 let rec internal_function_rect_Type1 h_mk_internal_function x_1 1124=809 let rec internal_function_rect_Type1 h_mk_internal_function x_14440 = 806 810 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 807 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1124811 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14440 808 812 in 809 813 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 … … 814 818 (AST.ident, AST.typ) Types.prod List.list -> __ -> Nat.nat -> stmt -> __ 815 819 -> 'a1) -> internal_function -> 'a1 **) 816 let rec internal_function_rect_Type0 h_mk_internal_function x_1 1126=820 let rec internal_function_rect_Type0 h_mk_internal_function x_14442 = 817 821 let { f_return = f_return0; f_params = f_params0; f_vars = f_vars0; 818 f_stacksize = f_stacksize0; f_body = f_body0 } = x_1 1126822 f_stacksize = f_stacksize0; f_body = f_body0 } = x_14442 819 823 in 820 824 h_mk_internal_function f_return0 f_params0 f_vars0 __ f_stacksize0 f_body0 -
extracted/cminor_syntax.mli
r2649 r2717 29 29 open Division 30 30 31 open Exp 32 31 33 open Arithmetic 32 34 … … 90 92 91 93 open FrontEndOps 94 95 open BitVectorTrie 92 96 93 97 open CostLabel -
extracted/compiler.ml
r2649 r2717 1 1 open Preamble 2 2 3 open BitVectorTrie 4 3 5 open CostLabel 4 6 … … 31 33 open Identifiers 32 34 35 open Exp 36 33 37 open Arithmetic 34 38 … … 148 152 149 153 open Initialisation 150 151 open BitVectorTrie152 154 153 155 open Graphs … … 175 177 init_cost; Types.snd = p' }; Types.snd = p5 })) 176 178 179 open Deqsets 180 181 open State 182 183 open Bind_new 184 185 open BindLists 186 187 open Blocks 188 189 open TranslateUtils 190 191 open AssocList 192 177 193 open String 178 194 179 195 open LabelledObjects 180 196 197 open I8051 198 199 open BackEndOps 200 201 open Joint 202 203 open RTL 204 205 open RTLabsToRTL 206 207 open ERTL 208 209 open RegisterSet 210 211 open RTLToERTL 212 213 open ERTLptr 214 215 open ERTLToERTLptr 216 217 open Fixpoints 218 219 open Set_adt 220 221 open Liveness 222 223 open Interference 224 225 open Joint_LTL_LIN 226 227 open LTL 228 229 open ERTLptrToLTL 230 231 open LIN 232 233 open Linearise 234 235 open LTLToLIN 236 181 237 open ASM 238 239 open BitVectorTrieSet 240 241 open LINToASM 242 243 (** val compute_fixpoint : Fixpoints.fixpoint_computer **) 244 let compute_fixpoint _ = 245 failwith "AXIOM TO BE REALIZED" 246 247 (** val colour_graph : Interference.coloured_graph_computer **) 248 let colour_graph _ = 249 failwith "AXIOM TO BE REALIZED" 182 250 183 251 (** val back_end : 184 252 RTLabs_syntax.rTLabs_program -> ASM.pseudo_assembly_program **) 185 let back_end x = 186 failwith "AXIOM TO BE REALIZED" 253 let back_end p = 254 let p0 = RTLabsToRTL.rtlabs_to_rtl p in 255 let p3 = RTLToERTL.rtl_to_ertl p0 in 256 let p4 = ERTLToERTLptr.ertl_to_ertlptr p3 in 257 let p5 = ERTLptrToLTL.ertlptr_to_ltl compute_fixpoint colour_graph p4 in 258 let p6 = LTLToLIN.ltl_to_lin p5 in LINToASM.lin_to_asm p6 187 259 188 260 type object_code = BitVector.byte List.list 189 261 190 type costlabel_map = CostLabel.costlabel BitVectorTrie.bitVectorTrie 262 type costlabel_map1 = CostLabel.costlabel BitVectorTrie.bitVectorTrie 263 264 open Assembly 265 266 open Status 267 268 open Fetch 269 270 open PolicyFront 271 272 open PolicyStep 273 274 open Policy 191 275 192 276 (** val assembler : 193 ASM.pseudo_assembly_program -> (object_code, costlabel_map ) Types.prod277 ASM.pseudo_assembly_program -> (object_code, costlabel_map1) Types.prod 194 278 Errors.res **) 195 let assembler x = 196 failwith "AXIOM TO BE REALIZED" 279 let assembler p = 280 let { Types.fst = preamble0; Types.snd = list_instr } = p in 281 let p' = { Types.fst = preamble0; Types.snd = list_instr } in 282 Obj.magic 283 (Monad.m_bind0 (Monad.max_def Errors.res0) 284 (Obj.magic 285 (Errors.opt_to_res (Errors.msg ErrorMessages.Jump_expansion_failed) 286 (Policy.jump_expansion' (Types.coerc_pair_sigma p')))) 287 (fun sigma_pol -> 288 let sigma0 = fun ppc -> (Types.pi1 sigma_pol).Types.fst ppc in 289 let pol = fun ppc -> (Types.pi1 sigma_pol).Types.snd ppc in 290 Obj.magic (Errors.OK (Types.pi1 (Assembly.assembly p sigma0 pol))))) 197 291 198 292 open StructuredTraces … … 200 294 open AbstractStatus 201 295 202 open Status203 204 296 open StatusProofs 205 297 206 298 open Interpret 207 208 open Fetch209 299 210 300 open ASMCosts … … 223 313 224 314 (** val compile : 225 Csyntax.clight_program -> ((object_code, costlabel_map ) Types.prod,315 Csyntax.clight_program -> ((object_code, costlabel_map1) Types.prod, 226 316 (Csyntax.clight_program, Label.clight_cost_map) Types.dPair) Types.prod 227 317 Errors.res **) -
extracted/compiler.mli
r2649 r2717 1 1 open Preamble 2 2 3 open BitVectorTrie 4 3 5 open CostLabel 4 6 … … 31 33 open Identifiers 32 34 35 open Exp 36 33 37 open Arithmetic 34 38 … … 148 152 149 153 open Initialisation 150 151 open BitVectorTrie152 154 153 155 open Graphs … … 165 167 Types.prod, RTLabs_syntax.rTLabs_program) Types.prod Errors.res 166 168 169 open Deqsets 170 171 open State 172 173 open Bind_new 174 175 open BindLists 176 177 open Blocks 178 179 open TranslateUtils 180 181 open AssocList 182 167 183 open String 168 184 169 185 open LabelledObjects 170 186 187 open I8051 188 189 open BackEndOps 190 191 open Joint 192 193 open RTL 194 195 open RTLabsToRTL 196 197 open ERTL 198 199 open RegisterSet 200 201 open RTLToERTL 202 203 open ERTLptr 204 205 open ERTLToERTLptr 206 207 open Fixpoints 208 209 open Set_adt 210 211 open Liveness 212 213 open Interference 214 215 open Joint_LTL_LIN 216 217 open LTL 218 219 open ERTLptrToLTL 220 221 open LIN 222 223 open Linearise 224 225 open LTLToLIN 226 171 227 open ASM 172 228 229 open BitVectorTrieSet 230 231 open LINToASM 232 233 val compute_fixpoint : Fixpoints.fixpoint_computer 234 235 val colour_graph : Interference.coloured_graph_computer 236 173 237 val back_end : RTLabs_syntax.rTLabs_program -> ASM.pseudo_assembly_program 174 238 175 239 type object_code = BitVector.byte List.list 176 240 177 type costlabel_map = CostLabel.costlabel BitVectorTrie.bitVectorTrie 241 type costlabel_map1 = CostLabel.costlabel BitVectorTrie.bitVectorTrie 242 243 open Assembly 244 245 open Status 246 247 open Fetch 248 249 open PolicyFront 250 251 open PolicyStep 252 253 open Policy 178 254 179 255 val assembler : 180 ASM.pseudo_assembly_program -> (object_code, costlabel_map ) Types.prod256 ASM.pseudo_assembly_program -> (object_code, costlabel_map1) Types.prod 181 257 Errors.res 182 258 … … 185 261 open AbstractStatus 186 262 187 open Status188 189 263 open StatusProofs 190 264 191 265 open Interpret 192 193 open Fetch194 266 195 267 open ASMCosts … … 206 278 207 279 val compile : 208 Csyntax.clight_program -> ((object_code, costlabel_map ) Types.prod,280 Csyntax.clight_program -> ((object_code, costlabel_map1) Types.prod, 209 281 (Csyntax.clight_program, Label.clight_cost_map) Types.dPair) Types.prod 210 282 Errors.res -
extracted/costLabel.ml
r2649 r2717 26 26 27 27 open Identifiers 28 29 open Exp 28 30 29 31 open Arithmetic … … 67 69 open AST 68 70 71 open BitVectorTrie 72 69 73 type costlabel = PreIdentifiers.identifier 70 74 … … 73 77 Identifiers.identifier_of_nat PreIdentifiers.CostTag 74 78 79 type costlabel_map = costlabel BitVectorTrie.bitVectorTrie 80 81 (** val costlabel_map0 : costlabel_map **) 82 let costlabel_map0 = 83 BitVectorTrie.Stub (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 84 (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S 85 Nat.O)))))))))))))))) 86 -
extracted/costLabel.mli
r2649 r2717 26 26 27 27 open Identifiers 28 29 open Exp 28 30 29 31 open Arithmetic … … 67 69 open AST 68 70 71 open BitVectorTrie 72 69 73 type costlabel = PreIdentifiers.identifier 70 74 71 75 val costlabel_of_nat : Nat.nat -> costlabel 72 76 77 type costlabel_map = costlabel BitVectorTrie.bitVectorTrie 78 79 val costlabel_map0 : costlabel_map 80 -
extracted/csem.ml
r2649 r2717 37 37 open Identifiers 38 38 39 open Exp 40 39 41 open Arithmetic 40 42 … … 92 94 93 95 open Globalenvs 96 97 open BitVectorTrie 94 98 95 99 open CostLabel … … 776 780 let rec cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function 777 781 | Kstop -> h_Kstop 778 | Kseq (x_ 5937, x_5936) ->779 h_Kseq x_ 5937 x_5936782 | Kseq (x_8622, x_8621) -> 783 h_Kseq x_8622 x_8621 780 784 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 781 h_Kswitch h_Kcall x_ 5936)782 | Kwhile (x_ 5940, x_5939, x_5938) ->783 h_Kwhile x_ 5940 x_5939 x_5938785 h_Kswitch h_Kcall x_8621) 786 | Kwhile (x_8625, x_8624, x_8623) -> 787 h_Kwhile x_8625 x_8624 x_8623 784 788 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 785 h_Kswitch h_Kcall x_ 5938)786 | Kdowhile (x_ 5943, x_5942, x_5941) ->787 h_Kdowhile x_ 5943 x_5942 x_5941789 h_Kswitch h_Kcall x_8623) 790 | Kdowhile (x_8628, x_8627, x_8626) -> 791 h_Kdowhile x_8628 x_8627 x_8626 788 792 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 789 h_Kswitch h_Kcall x_ 5941)790 | Kfor2 (x_ 5947, x_5946, x_5945, x_5944) ->791 h_Kfor2 x_ 5947 x_5946 x_5945 x_5944793 h_Kswitch h_Kcall x_8626) 794 | Kfor2 (x_8632, x_8631, x_8630, x_8629) -> 795 h_Kfor2 x_8632 x_8631 x_8630 x_8629 792 796 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 793 h_Kswitch h_Kcall x_ 5944)794 | Kfor3 (x_ 5951, x_5950, x_5949, x_5948) ->795 h_Kfor3 x_ 5951 x_5950 x_5949 x_5948797 h_Kswitch h_Kcall x_8629) 798 | Kfor3 (x_8636, x_8635, x_8634, x_8633) -> 799 h_Kfor3 x_8636 x_8635 x_8634 x_8633 796 800 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 797 h_Kswitch h_Kcall x_ 5948)798 | Kswitch x_ 5952->799 h_Kswitch x_ 5952801 h_Kswitch h_Kcall x_8633) 802 | Kswitch x_8637 -> 803 h_Kswitch x_8637 800 804 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 801 h_Kswitch h_Kcall x_ 5952)802 | Kcall (x_ 5956, x_5955, x_5954, x_5953) ->803 h_Kcall x_ 5956 x_5955 x_5954 x_5953805 h_Kswitch h_Kcall x_8637) 806 | Kcall (x_8641, x_8640, x_8639, x_8638) -> 807 h_Kcall x_8641 x_8640 x_8639 x_8638 804 808 (cont_rect_Type4 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 805 h_Kswitch h_Kcall x_ 5953)809 h_Kswitch h_Kcall x_8638) 806 810 807 811 (** val cont_rect_Type3 : … … 816 820 let rec cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function 817 821 | Kstop -> h_Kstop 818 | Kseq (x_ 5997, x_5996) ->819 h_Kseq x_ 5997 x_5996822 | Kseq (x_8682, x_8681) -> 823 h_Kseq x_8682 x_8681 820 824 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 821 h_Kswitch h_Kcall x_ 5996)822 | Kwhile (x_ 6000, x_5999, x_5998) ->823 h_Kwhile x_ 6000 x_5999 x_5998825 h_Kswitch h_Kcall x_8681) 826 | Kwhile (x_8685, x_8684, x_8683) -> 827 h_Kwhile x_8685 x_8684 x_8683 824 828 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 825 h_Kswitch h_Kcall x_ 5998)826 | Kdowhile (x_ 6003, x_6002, x_6001) ->827 h_Kdowhile x_ 6003 x_6002 x_6001829 h_Kswitch h_Kcall x_8683) 830 | Kdowhile (x_8688, x_8687, x_8686) -> 831 h_Kdowhile x_8688 x_8687 x_8686 828 832 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 829 h_Kswitch h_Kcall x_ 6001)830 | Kfor2 (x_ 6007, x_6006, x_6005, x_6004) ->831 h_Kfor2 x_ 6007 x_6006 x_6005 x_6004833 h_Kswitch h_Kcall x_8686) 834 | Kfor2 (x_8692, x_8691, x_8690, x_8689) -> 835 h_Kfor2 x_8692 x_8691 x_8690 x_8689 832 836 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 833 h_Kswitch h_Kcall x_ 6004)834 | Kfor3 (x_ 6011, x_6010, x_6009, x_6008) ->835 h_Kfor3 x_ 6011 x_6010 x_6009 x_6008837 h_Kswitch h_Kcall x_8689) 838 | Kfor3 (x_8696, x_8695, x_8694, x_8693) -> 839 h_Kfor3 x_8696 x_8695 x_8694 x_8693 836 840 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 837 h_Kswitch h_Kcall x_ 6008)838 | Kswitch x_ 6012->839 h_Kswitch x_ 6012841 h_Kswitch h_Kcall x_8693) 842 | Kswitch x_8697 -> 843 h_Kswitch x_8697 840 844 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 841 h_Kswitch h_Kcall x_ 6012)842 | Kcall (x_ 6016, x_6015, x_6014, x_6013) ->843 h_Kcall x_ 6016 x_6015 x_6014 x_6013845 h_Kswitch h_Kcall x_8697) 846 | Kcall (x_8701, x_8700, x_8699, x_8698) -> 847 h_Kcall x_8701 x_8700 x_8699 x_8698 844 848 (cont_rect_Type3 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 845 h_Kswitch h_Kcall x_ 6013)849 h_Kswitch h_Kcall x_8698) 846 850 847 851 (** val cont_rect_Type2 : … … 856 860 let rec cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function 857 861 | Kstop -> h_Kstop 858 | Kseq (x_ 6027, x_6026) ->859 h_Kseq x_ 6027 x_6026862 | Kseq (x_8712, x_8711) -> 863 h_Kseq x_8712 x_8711 860 864 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 861 h_Kswitch h_Kcall x_ 6026)862 | Kwhile (x_ 6030, x_6029, x_6028) ->863 h_Kwhile x_ 6030 x_6029 x_6028865 h_Kswitch h_Kcall x_8711) 866 | Kwhile (x_8715, x_8714, x_8713) -> 867 h_Kwhile x_8715 x_8714 x_8713 864 868 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 865 h_Kswitch h_Kcall x_ 6028)866 | Kdowhile (x_ 6033, x_6032, x_6031) ->867 h_Kdowhile x_ 6033 x_6032 x_6031869 h_Kswitch h_Kcall x_8713) 870 | Kdowhile (x_8718, x_8717, x_8716) -> 871 h_Kdowhile x_8718 x_8717 x_8716 868 872 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 869 h_Kswitch h_Kcall x_ 6031)870 | Kfor2 (x_ 6037, x_6036, x_6035, x_6034) ->871 h_Kfor2 x_ 6037 x_6036 x_6035 x_6034873 h_Kswitch h_Kcall x_8716) 874 | Kfor2 (x_8722, x_8721, x_8720, x_8719) -> 875 h_Kfor2 x_8722 x_8721 x_8720 x_8719 872 876 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 873 h_Kswitch h_Kcall x_ 6034)874 | Kfor3 (x_ 6041, x_6040, x_6039, x_6038) ->875 h_Kfor3 x_ 6041 x_6040 x_6039 x_6038877 h_Kswitch h_Kcall x_8719) 878 | Kfor3 (x_8726, x_8725, x_8724, x_8723) -> 879 h_Kfor3 x_8726 x_8725 x_8724 x_8723 876 880 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 877 h_Kswitch h_Kcall x_ 6038)878 | Kswitch x_ 6042->879 h_Kswitch x_ 6042881 h_Kswitch h_Kcall x_8723) 882 | Kswitch x_8727 -> 883 h_Kswitch x_8727 880 884 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 881 h_Kswitch h_Kcall x_ 6042)882 | Kcall (x_ 6046, x_6045, x_6044, x_6043) ->883 h_Kcall x_ 6046 x_6045 x_6044 x_6043885 h_Kswitch h_Kcall x_8727) 886 | Kcall (x_8731, x_8730, x_8729, x_8728) -> 887 h_Kcall x_8731 x_8730 x_8729 x_8728 884 888 (cont_rect_Type2 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 885 h_Kswitch h_Kcall x_ 6043)889 h_Kswitch h_Kcall x_8728) 886 890 887 891 (** val cont_rect_Type1 : … … 896 900 let rec cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function 897 901 | Kstop -> h_Kstop 898 | Kseq (x_ 6057, x_6056) ->899 h_Kseq x_ 6057 x_6056902 | Kseq (x_8742, x_8741) -> 903 h_Kseq x_8742 x_8741 900 904 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 901 h_Kswitch h_Kcall x_ 6056)902 | Kwhile (x_ 6060, x_6059, x_6058) ->903 h_Kwhile x_ 6060 x_6059 x_6058905 h_Kswitch h_Kcall x_8741) 906 | Kwhile (x_8745, x_8744, x_8743) -> 907 h_Kwhile x_8745 x_8744 x_8743 904 908 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 905 h_Kswitch h_Kcall x_ 6058)906 | Kdowhile (x_ 6063, x_6062, x_6061) ->907 h_Kdowhile x_ 6063 x_6062 x_6061909 h_Kswitch h_Kcall x_8743) 910 | Kdowhile (x_8748, x_8747, x_8746) -> 911 h_Kdowhile x_8748 x_8747 x_8746 908 912 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 909 h_Kswitch h_Kcall x_ 6061)910 | Kfor2 (x_ 6067, x_6066, x_6065, x_6064) ->911 h_Kfor2 x_ 6067 x_6066 x_6065 x_6064913 h_Kswitch h_Kcall x_8746) 914 | Kfor2 (x_8752, x_8751, x_8750, x_8749) -> 915 h_Kfor2 x_8752 x_8751 x_8750 x_8749 912 916 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 913 h_Kswitch h_Kcall x_ 6064)914 | Kfor3 (x_ 6071, x_6070, x_6069, x_6068) ->915 h_Kfor3 x_ 6071 x_6070 x_6069 x_6068917 h_Kswitch h_Kcall x_8749) 918 | Kfor3 (x_8756, x_8755, x_8754, x_8753) -> 919 h_Kfor3 x_8756 x_8755 x_8754 x_8753 916 920 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 917 h_Kswitch h_Kcall x_ 6068)918 | Kswitch x_ 6072->919 h_Kswitch x_ 6072921 h_Kswitch h_Kcall x_8753) 922 | Kswitch x_8757 -> 923 h_Kswitch x_8757 920 924 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 921 h_Kswitch h_Kcall x_ 6072)922 | Kcall (x_ 6076, x_6075, x_6074, x_6073) ->923 h_Kcall x_ 6076 x_6075 x_6074 x_6073925 h_Kswitch h_Kcall x_8757) 926 | Kcall (x_8761, x_8760, x_8759, x_8758) -> 927 h_Kcall x_8761 x_8760 x_8759 x_8758 924 928 (cont_rect_Type1 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 925 h_Kswitch h_Kcall x_ 6073)929 h_Kswitch h_Kcall x_8758) 926 930 927 931 (** val cont_rect_Type0 : … … 936 940 let rec cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 h_Kswitch h_Kcall = function 937 941 | Kstop -> h_Kstop 938 | Kseq (x_ 6087, x_6086) ->939 h_Kseq x_ 6087 x_6086942 | Kseq (x_8772, x_8771) -> 943 h_Kseq x_8772 x_8771 940 944 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 941 h_Kswitch h_Kcall x_ 6086)942 | Kwhile (x_ 6090, x_6089, x_6088) ->943 h_Kwhile x_ 6090 x_6089 x_6088945 h_Kswitch h_Kcall x_8771) 946 | Kwhile (x_8775, x_8774, x_8773) -> 947 h_Kwhile x_8775 x_8774 x_8773 944 948 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 945 h_Kswitch h_Kcall x_ 6088)946 | Kdowhile (x_ 6093, x_6092, x_6091) ->947 h_Kdowhile x_ 6093 x_6092 x_6091949 h_Kswitch h_Kcall x_8773) 950 | Kdowhile (x_8778, x_8777, x_8776) -> 951 h_Kdowhile x_8778 x_8777 x_8776 948 952 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 949 h_Kswitch h_Kcall x_ 6091)950 | Kfor2 (x_ 6097, x_6096, x_6095, x_6094) ->951 h_Kfor2 x_ 6097 x_6096 x_6095 x_6094953 h_Kswitch h_Kcall x_8776) 954 | Kfor2 (x_8782, x_8781, x_8780, x_8779) -> 955 h_Kfor2 x_8782 x_8781 x_8780 x_8779 952 956 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 953 h_Kswitch h_Kcall x_ 6094)954 | Kfor3 (x_ 6101, x_6100, x_6099, x_6098) ->955 h_Kfor3 x_ 6101 x_6100 x_6099 x_6098957 h_Kswitch h_Kcall x_8779) 958 | Kfor3 (x_8786, x_8785, x_8784, x_8783) -> 959 h_Kfor3 x_8786 x_8785 x_8784 x_8783 956 960 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 957 h_Kswitch h_Kcall x_ 6098)958 | Kswitch x_ 6102->959 h_Kswitch x_ 6102961 h_Kswitch h_Kcall x_8783) 962 | Kswitch x_8787 -> 963 h_Kswitch x_8787 960 964 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 961 h_Kswitch h_Kcall x_ 6102)962 | Kcall (x_ 6106, x_6105, x_6104, x_6103) ->963 h_Kcall x_ 6106 x_6105 x_6104 x_6103965 h_Kswitch h_Kcall x_8787) 966 | Kcall (x_8791, x_8790, x_8789, x_8788) -> 967 h_Kcall x_8791 x_8790 x_8789 x_8788 964 968 (cont_rect_Type0 h_Kstop h_Kseq h_Kwhile h_Kdowhile h_Kfor2 h_Kfor3 965 h_Kswitch h_Kcall x_ 6103)969 h_Kswitch h_Kcall x_8788) 966 970 967 971 (** val cont_inv_rect_Type4 : … … 1069 1073 type state0 = 1070 1074 | State of Csyntax.function0 * Csyntax.statement * cont * env * GenMem.mem1 1071 | Callstate of Csyntax.clight_fundef * Values.val0 List.list * cont1072 * GenMem.mem11075 | Callstate of Values.val0 * Csyntax.clight_fundef * Values.val0 List.list 1076 * cont * GenMem.mem1 1073 1077 | Returnstate of Values.val0 * cont * GenMem.mem1 1074 1078 | Finalstate of Integers.int … … 1076 1080 (** val state_rect_Type4 : 1077 1081 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1078 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1079 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1080 (Integers.int -> 'a1) -> state0 -> 'a1 **)1082 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1083 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1084 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1081 1085 let rec state_rect_Type4 h_State h_Callstate h_Returnstate h_Finalstate = function 1082 1086 | State (f, s, k, e1, m) -> h_State f s k e1 m 1083 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1087 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1084 1088 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1085 1089 | Finalstate r -> h_Finalstate r … … 1087 1091 (** val state_rect_Type5 : 1088 1092 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1089 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1090 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1091 (Integers.int -> 'a1) -> state0 -> 'a1 **)1093 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1094 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1095 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1092 1096 let rec state_rect_Type5 h_State h_Callstate h_Returnstate h_Finalstate = function 1093 1097 | State (f, s, k, e1, m) -> h_State f s k e1 m 1094 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1098 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1095 1099 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1096 1100 | Finalstate r -> h_Finalstate r … … 1098 1102 (** val state_rect_Type3 : 1099 1103 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1100 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1101 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1102 (Integers.int -> 'a1) -> state0 -> 'a1 **)1104 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1105 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1106 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1103 1107 let rec state_rect_Type3 h_State h_Callstate h_Returnstate h_Finalstate = function 1104 1108 | State (f, s, k, e1, m) -> h_State f s k e1 m 1105 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1109 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1106 1110 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1107 1111 | Finalstate r -> h_Finalstate r … … 1109 1113 (** val state_rect_Type2 : 1110 1114 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1111 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1112 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1113 (Integers.int -> 'a1) -> state0 -> 'a1 **)1115 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1116 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1117 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1114 1118 let rec state_rect_Type2 h_State h_Callstate h_Returnstate h_Finalstate = function 1115 1119 | State (f, s, k, e1, m) -> h_State f s k e1 m 1116 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1120 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1117 1121 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1118 1122 | Finalstate r -> h_Finalstate r … … 1120 1124 (** val state_rect_Type1 : 1121 1125 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1122 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1123 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1124 (Integers.int -> 'a1) -> state0 -> 'a1 **)1126 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1127 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1128 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1125 1129 let rec state_rect_Type1 h_State h_Callstate h_Returnstate h_Finalstate = function 1126 1130 | State (f, s, k, e1, m) -> h_State f s k e1 m 1127 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1131 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1128 1132 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1129 1133 | Finalstate r -> h_Finalstate r … … 1131 1135 (** val state_rect_Type0 : 1132 1136 (Csyntax.function0 -> Csyntax.statement -> cont -> env -> GenMem.mem1 -> 1133 'a1) -> ( Csyntax.clight_fundef -> Values.val0 List.list -> cont ->1134 GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 'a1)->1135 (Integers.int -> 'a1) -> state0 -> 'a1 **)1137 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> Values.val0 List.list -> 1138 cont -> GenMem.mem1 -> 'a1) -> (Values.val0 -> cont -> GenMem.mem1 -> 1139 'a1) -> (Integers.int -> 'a1) -> state0 -> 'a1 **) 1136 1140 let rec state_rect_Type0 h_State h_Callstate h_Returnstate h_Finalstate = function 1137 1141 | State (f, s, k, e1, m) -> h_State f s k e1 m 1138 | Callstate (f d, args, k, m) -> h_Callstatefd args k m1142 | Callstate (fb, fd, args, k, m) -> h_Callstate fb fd args k m 1139 1143 | Returnstate (res1, k, m) -> h_Returnstate res1 k m 1140 1144 | Finalstate r -> h_Finalstate r … … 1142 1146 (** val state_inv_rect_Type4 : 1143 1147 state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env -> 1144 GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0 1145 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont -> 1146 GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **) 1148 GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> 1149 Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> 1150 (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ 1151 -> 'a1) -> 'a1 **) 1147 1152 let state_inv_rect_Type4 hterm h1 h2 h3 h4 = 1148 1153 let hcut = state_rect_Type4 h1 h2 h3 h4 hterm in hcut __ … … 1150 1155 (** val state_inv_rect_Type3 : 1151 1156 state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env -> 1152 GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0 1153 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont -> 1154 GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **) 1157 GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> 1158 Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> 1159 (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ 1160 -> 'a1) -> 'a1 **) 1155 1161 let state_inv_rect_Type3 hterm h1 h2 h3 h4 = 1156 1162 let hcut = state_rect_Type3 h1 h2 h3 h4 hterm in hcut __ … … 1158 1164 (** val state_inv_rect_Type2 : 1159 1165 state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env -> 1160 GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0 1161 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont -> 1162 GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **) 1166 GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> 1167 Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> 1168 (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ 1169 -> 'a1) -> 'a1 **) 1163 1170 let state_inv_rect_Type2 hterm h1 h2 h3 h4 = 1164 1171 let hcut = state_rect_Type2 h1 h2 h3 h4 hterm in hcut __ … … 1166 1173 (** val state_inv_rect_Type1 : 1167 1174 state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env -> 1168 GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0 1169 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont -> 1170 GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **) 1175 GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> 1176 Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> 1177 (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ 1178 -> 'a1) -> 'a1 **) 1171 1179 let state_inv_rect_Type1 hterm h1 h2 h3 h4 = 1172 1180 let hcut = state_rect_Type1 h1 h2 h3 h4 hterm in hcut __ … … 1174 1182 (** val state_inv_rect_Type0 : 1175 1183 state0 -> (Csyntax.function0 -> Csyntax.statement -> cont -> env -> 1176 GenMem.mem1 -> __ -> 'a1) -> (Csyntax.clight_fundef -> Values.val0 1177 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> cont -> 1178 GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ -> 'a1) -> 'a1 **) 1184 GenMem.mem1 -> __ -> 'a1) -> (Values.val0 -> Csyntax.clight_fundef -> 1185 Values.val0 List.list -> cont -> GenMem.mem1 -> __ -> 'a1) -> 1186 (Values.val0 -> cont -> GenMem.mem1 -> __ -> 'a1) -> (Integers.int -> __ 1187 -> 'a1) -> 'a1 **) 1179 1188 let state_inv_rect_Type0 hterm h1 h2 h3 h4 = 1180 1189 let hcut = state_rect_Type0 h1 h2 h3 h4 hterm in hcut __ … … 1186 1195 | State (a0, a1, a2, a3, a4) -> 1187 1196 Obj.m