41# 42# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 43# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 44# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 45# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 46# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 47# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 48# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 49# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 50# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 51# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 52# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53# 54# Authors: Gabe Black 55 56microcode = ''' 57def macroop SALC_R 58{ 59 sbb reg, reg, reg, dataSize=1 60}; 61 62def macroop SETZ_R 63{ 64 movi reg, reg, 1, flags=(CZF,) 65 movi reg, reg, 0, flags=(nCZF,) 66}; 67 68def macroop SETZ_M 69{ 70 movi t1, t1, 1, flags=(CZF,) 71 movi t1, t1, 0, flags=(nCZF,) 72 st t1, seg, sib, disp 73}; 74 75def macroop SETZ_P 76{ 77 rdip t7 78 movi t1, t1, 1, flags=(CZF,) 79 movi t1, t1, 0, flags=(nCZF,) 80 st t1, seg, riprel, disp 81}; 82 83def macroop SETNZ_R 84{ 85 movi reg, reg, 1, flags=(nCZF,) 86 movi reg, reg, 0, flags=(CZF,) 87}; 88 89def macroop SETNZ_M 90{ 91 movi t1, t1, 1, flags=(nCZF,) 92 movi t1, t1, 0, flags=(CZF,) 93 st t1, seg, sib, disp 94}; 95 96def macroop SETNZ_P 97{ 98 rdip t7 99 movi t1, t1, 1, flags=(nCZF,) 100 movi t1, t1, 0, flags=(CZF,) 101 st t1, seg, riprel, disp 102}; 103 104def macroop SETB_R 105{ 106 movi reg, reg, 1, flags=(CCF,) 107 movi reg, reg, 0, flags=(nCCF,) 108}; 109 110def macroop SETB_M 111{ 112 movi t1, t1, 1, flags=(CCF,) 113 movi t1, t1, 0, flags=(nCCF,) 114 st t1, seg, sib, disp 115}; 116 117def macroop SETB_P 118{ 119 rdip t7 120 movi t1, t1, 1, flags=(CCF,) 121 movi t1, t1, 0, flags=(nCCF,) 122 st t1, seg, riprel, disp 123}; 124 125def macroop SETNB_R 126{ 127 movi reg, reg, 1, flags=(nCCF,) 128 movi reg, reg, 0, flags=(CCF,) 129}; 130 131def macroop SETNB_M 132{ 133 movi t1, t1, 1, flags=(nCCF,) 134 movi t1, t1, 0, flags=(CCF,) 135 st t1, seg, sib, disp 136}; 137 138def macroop SETNB_P 139{ 140 rdip t7 141 movi t1, t1, 1, flags=(nCCF,) 142 movi t1, t1, 0, flags=(CCF,) 143 st t1, seg, riprel, disp 144}; 145 146def macroop SETBE_R 147{ 148 movi reg, reg, 1, flags=(CCvZF,) 149 movi reg, reg, 0, flags=(nCCvZF,) 150}; 151 152def macroop SETBE_M 153{ 154 movi t1, t1, 1, flags=(CCvZF,) 155 movi t1, t1, 0, flags=(nCCvZF,) 156 st t1, seg, sib, disp 157}; 158 159def macroop SETBE_P 160{ 161 rdip t7 162 movi t1, t1, 1, flags=(CCvZF,) 163 movi t1, t1, 0, flags=(nCCvZF,) 164 st t1, seg, riprel, disp 165}; 166 167def macroop SETNBE_R 168{ 169 movi reg, reg, 1, flags=(nCCvZF,) 170 movi reg, reg, 0, flags=(CCvZF,) 171}; 172 173def macroop SETNBE_M 174{ 175 movi t1, t1, 1, flags=(nCCvZF,) 176 movi t1, t1, 0, flags=(CCvZF,) 177 st t1, seg, sib, disp 178}; 179 180def macroop SETNBE_P 181{ 182 rdip t7 183 movi t1, t1, 1, flags=(nCCvZF,) 184 movi t1, t1, 0, flags=(CCvZF,) 185 st t1, seg, riprel, disp 186}; 187 188def macroop SETS_R 189{ 190 movi reg, reg, 1, flags=(CSF,) 191 movi reg, reg, 0, flags=(nCSF,) 192}; 193 194def macroop SETS_M 195{ 196 movi t1, t1, 1, flags=(CSF,) 197 movi t1, t1, 0, flags=(nCSF,) 198 st t1, seg, sib, disp 199}; 200 201def macroop SETS_P 202{ 203 rdip t7 204 movi t1, t1, 1, flags=(CSF,) 205 movi t1, t1, 0, flags=(nCSF,) 206 st t1, seg, riprel, disp 207}; 208 209def macroop SETNS_R 210{ 211 movi reg, reg, 1, flags=(nCSF,) 212 movi reg, reg, 0, flags=(CSF,) 213}; 214 215def macroop SETNS_M 216{ 217 movi t1, t1, 1, flags=(nCSF,) 218 movi t1, t1, 0, flags=(CSF,) 219 st t1, seg, sib, disp 220}; 221 222def macroop SETNS_P 223{ 224 rdip t7 225 movi t1, t1, 1, flags=(nCSF,) 226 movi t1, t1, 0, flags=(CSF,) 227 st t1, seg, riprel, disp 228}; 229 230def macroop SETP_R 231{ 232 movi reg, reg, 1, flags=(CPF,) 233 movi reg, reg, 0, flags=(nCPF,) 234}; 235 236def macroop SETP_M 237{ 238 movi t1, t1, 1, flags=(CPF,) 239 movi t1, t1, 0, flags=(nCPF,) 240 st t1, seg, sib, disp 241}; 242 243def macroop SETP_P 244{ 245 rdip t7 246 movi t1, t1, 1, flags=(CPF,) 247 movi t1, t1, 0, flags=(nCPF,) 248 st t1, seg, riprel, disp 249}; 250 251def macroop SETNP_R 252{ 253 movi reg, reg, 1, flags=(nCPF,) 254 movi reg, reg, 0, flags=(CPF,) 255}; 256 257def macroop SETNP_M 258{ 259 movi t1, t1, 1, flags=(nCPF,) 260 movi t1, t1, 0, flags=(CPF,) 261 st t1, seg, sib, disp 262}; 263 264def macroop SETNP_P 265{ 266 rdip t7 267 movi t1, t1, 1, flags=(nCPF,) 268 movi t1, t1, 0, flags=(CPF,) 269 st t1, seg, riprel, disp 270}; 271 272def macroop SETL_R 273{ 274 movi reg, reg, 1, flags=(CSxOF,) 275 movi reg, reg, 0, flags=(nCSxOF,) 276}; 277 278def macroop SETL_M 279{ 280 movi t1, t1, 1, flags=(CSxOF,) 281 movi t1, t1, 0, flags=(nCSxOF,) 282 st t1, seg, sib, disp 283}; 284 285def macroop SETL_P 286{ 287 rdip t7 288 movi t1, t1, 1, flags=(CSxOF,) 289 movi t1, t1, 0, flags=(nCSxOF,) 290 st t1, seg, riprel, disp 291}; 292 293def macroop SETNL_R 294{ 295 movi reg, reg, 1, flags=(nCSxOF,) 296 movi reg, reg, 0, flags=(CSxOF,) 297}; 298 299def macroop SETNL_M 300{ 301 movi t1, t1, 1, flags=(nCSxOF,) 302 movi t1, t1, 0, flags=(CSxOF,) 303 st t1, seg, sib, disp 304}; 305 306def macroop SETNL_P 307{ 308 rdip t7 309 movi t1, t1, 1, flags=(nCSxOF,) 310 movi t1, t1, 0, flags=(CSxOF,) 311 st t1, seg, riprel, disp 312}; 313 314def macroop SETLE_R 315{ 316 movi reg, reg, 1, flags=(CSxOvZF,) 317 movi reg, reg, 0, flags=(nCSxOvZF,) 318}; 319 320def macroop SETLE_M 321{ 322 movi t1, t1, 1, flags=(CSxOvZF,) 323 movi t1, t1, 0, flags=(nCSxOvZF,) 324 st t1, seg, sib, disp 325}; 326 327def macroop SETLE_P 328{ 329 rdip t7 330 movi t1, t1, 1, flags=(CSxOvZF,) 331 movi t1, t1, 0, flags=(nCSxOvZF,) 332 st t1, seg, riprel, disp 333}; 334 335def macroop SETNLE_R 336{ 337 movi reg, reg, 1, flags=(nCSxOvZF,) 338 movi reg, reg, 0, flags=(CSxOvZF,) 339}; 340 341def macroop SETNLE_M 342{ 343 movi t1, t1, 1, flags=(nCSxOvZF,) 344 movi t1, t1, 0, flags=(CSxOvZF,) 345 st t1, seg, sib, disp 346}; 347 348def macroop SETNLE_P 349{ 350 rdip t7 351 movi t1, t1, 1, flags=(nCSxOvZF,) 352 movi t1, t1, 0, flags=(CSxOvZF,) 353 st t1, seg, riprel, disp 354}; 355 356def macroop SETO_R 357{ 358 movi reg, reg, 1, flags=(COF,) 359 movi reg, reg, 0, flags=(nCOF,) 360}; 361 362def macroop SETO_M 363{ 364 movi t1, t1, 1, flags=(COF,) 365 movi t1, t1, 0, flags=(nCOF,) 366 st t1, seg, sib, disp 367}; 368 369def macroop SETO_P 370{ 371 rdip t7 372 movi t1, t1, 1, flags=(COF,) 373 movi t1, t1, 0, flags=(nCOF,) 374 st t1, seg, riprel, disp 375}; 376 377def macroop SETNO_R 378{ 379 movi reg, reg, 1, flags=(nCOF,) 380 movi reg, reg, 0, flags=(COF,) 381}; 382 383def macroop SETNO_M 384{ 385 movi t1, t1, 1, flags=(nCOF,) 386 movi t1, t1, 0, flags=(COF,) 387 st t1, seg, sib, disp 388}; 389 390def macroop SETNO_P 391{ 392 rdip t7 393 movi t1, t1, 1, flags=(nCOF,) 394 movi t1, t1, 0, flags=(COF,) 395 st t1, seg, riprel, disp 396}; 397'''
| 23# 24# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 27# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 28# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 29# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 30# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 32# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35# 36# Authors: Gabe Black 37 38microcode = ''' 39def macroop SALC_R 40{ 41 sbb reg, reg, reg, dataSize=1 42}; 43 44def macroop SETZ_R 45{ 46 movi reg, reg, 1, flags=(CZF,) 47 movi reg, reg, 0, flags=(nCZF,) 48}; 49 50def macroop SETZ_M 51{ 52 movi t1, t1, 1, flags=(CZF,) 53 movi t1, t1, 0, flags=(nCZF,) 54 st t1, seg, sib, disp 55}; 56 57def macroop SETZ_P 58{ 59 rdip t7 60 movi t1, t1, 1, flags=(CZF,) 61 movi t1, t1, 0, flags=(nCZF,) 62 st t1, seg, riprel, disp 63}; 64 65def macroop SETNZ_R 66{ 67 movi reg, reg, 1, flags=(nCZF,) 68 movi reg, reg, 0, flags=(CZF,) 69}; 70 71def macroop SETNZ_M 72{ 73 movi t1, t1, 1, flags=(nCZF,) 74 movi t1, t1, 0, flags=(CZF,) 75 st t1, seg, sib, disp 76}; 77 78def macroop SETNZ_P 79{ 80 rdip t7 81 movi t1, t1, 1, flags=(nCZF,) 82 movi t1, t1, 0, flags=(CZF,) 83 st t1, seg, riprel, disp 84}; 85 86def macroop SETB_R 87{ 88 movi reg, reg, 1, flags=(CCF,) 89 movi reg, reg, 0, flags=(nCCF,) 90}; 91 92def macroop SETB_M 93{ 94 movi t1, t1, 1, flags=(CCF,) 95 movi t1, t1, 0, flags=(nCCF,) 96 st t1, seg, sib, disp 97}; 98 99def macroop SETB_P 100{ 101 rdip t7 102 movi t1, t1, 1, flags=(CCF,) 103 movi t1, t1, 0, flags=(nCCF,) 104 st t1, seg, riprel, disp 105}; 106 107def macroop SETNB_R 108{ 109 movi reg, reg, 1, flags=(nCCF,) 110 movi reg, reg, 0, flags=(CCF,) 111}; 112 113def macroop SETNB_M 114{ 115 movi t1, t1, 1, flags=(nCCF,) 116 movi t1, t1, 0, flags=(CCF,) 117 st t1, seg, sib, disp 118}; 119 120def macroop SETNB_P 121{ 122 rdip t7 123 movi t1, t1, 1, flags=(nCCF,) 124 movi t1, t1, 0, flags=(CCF,) 125 st t1, seg, riprel, disp 126}; 127 128def macroop SETBE_R 129{ 130 movi reg, reg, 1, flags=(CCvZF,) 131 movi reg, reg, 0, flags=(nCCvZF,) 132}; 133 134def macroop SETBE_M 135{ 136 movi t1, t1, 1, flags=(CCvZF,) 137 movi t1, t1, 0, flags=(nCCvZF,) 138 st t1, seg, sib, disp 139}; 140 141def macroop SETBE_P 142{ 143 rdip t7 144 movi t1, t1, 1, flags=(CCvZF,) 145 movi t1, t1, 0, flags=(nCCvZF,) 146 st t1, seg, riprel, disp 147}; 148 149def macroop SETNBE_R 150{ 151 movi reg, reg, 1, flags=(nCCvZF,) 152 movi reg, reg, 0, flags=(CCvZF,) 153}; 154 155def macroop SETNBE_M 156{ 157 movi t1, t1, 1, flags=(nCCvZF,) 158 movi t1, t1, 0, flags=(CCvZF,) 159 st t1, seg, sib, disp 160}; 161 162def macroop SETNBE_P 163{ 164 rdip t7 165 movi t1, t1, 1, flags=(nCCvZF,) 166 movi t1, t1, 0, flags=(CCvZF,) 167 st t1, seg, riprel, disp 168}; 169 170def macroop SETS_R 171{ 172 movi reg, reg, 1, flags=(CSF,) 173 movi reg, reg, 0, flags=(nCSF,) 174}; 175 176def macroop SETS_M 177{ 178 movi t1, t1, 1, flags=(CSF,) 179 movi t1, t1, 0, flags=(nCSF,) 180 st t1, seg, sib, disp 181}; 182 183def macroop SETS_P 184{ 185 rdip t7 186 movi t1, t1, 1, flags=(CSF,) 187 movi t1, t1, 0, flags=(nCSF,) 188 st t1, seg, riprel, disp 189}; 190 191def macroop SETNS_R 192{ 193 movi reg, reg, 1, flags=(nCSF,) 194 movi reg, reg, 0, flags=(CSF,) 195}; 196 197def macroop SETNS_M 198{ 199 movi t1, t1, 1, flags=(nCSF,) 200 movi t1, t1, 0, flags=(CSF,) 201 st t1, seg, sib, disp 202}; 203 204def macroop SETNS_P 205{ 206 rdip t7 207 movi t1, t1, 1, flags=(nCSF,) 208 movi t1, t1, 0, flags=(CSF,) 209 st t1, seg, riprel, disp 210}; 211 212def macroop SETP_R 213{ 214 movi reg, reg, 1, flags=(CPF,) 215 movi reg, reg, 0, flags=(nCPF,) 216}; 217 218def macroop SETP_M 219{ 220 movi t1, t1, 1, flags=(CPF,) 221 movi t1, t1, 0, flags=(nCPF,) 222 st t1, seg, sib, disp 223}; 224 225def macroop SETP_P 226{ 227 rdip t7 228 movi t1, t1, 1, flags=(CPF,) 229 movi t1, t1, 0, flags=(nCPF,) 230 st t1, seg, riprel, disp 231}; 232 233def macroop SETNP_R 234{ 235 movi reg, reg, 1, flags=(nCPF,) 236 movi reg, reg, 0, flags=(CPF,) 237}; 238 239def macroop SETNP_M 240{ 241 movi t1, t1, 1, flags=(nCPF,) 242 movi t1, t1, 0, flags=(CPF,) 243 st t1, seg, sib, disp 244}; 245 246def macroop SETNP_P 247{ 248 rdip t7 249 movi t1, t1, 1, flags=(nCPF,) 250 movi t1, t1, 0, flags=(CPF,) 251 st t1, seg, riprel, disp 252}; 253 254def macroop SETL_R 255{ 256 movi reg, reg, 1, flags=(CSxOF,) 257 movi reg, reg, 0, flags=(nCSxOF,) 258}; 259 260def macroop SETL_M 261{ 262 movi t1, t1, 1, flags=(CSxOF,) 263 movi t1, t1, 0, flags=(nCSxOF,) 264 st t1, seg, sib, disp 265}; 266 267def macroop SETL_P 268{ 269 rdip t7 270 movi t1, t1, 1, flags=(CSxOF,) 271 movi t1, t1, 0, flags=(nCSxOF,) 272 st t1, seg, riprel, disp 273}; 274 275def macroop SETNL_R 276{ 277 movi reg, reg, 1, flags=(nCSxOF,) 278 movi reg, reg, 0, flags=(CSxOF,) 279}; 280 281def macroop SETNL_M 282{ 283 movi t1, t1, 1, flags=(nCSxOF,) 284 movi t1, t1, 0, flags=(CSxOF,) 285 st t1, seg, sib, disp 286}; 287 288def macroop SETNL_P 289{ 290 rdip t7 291 movi t1, t1, 1, flags=(nCSxOF,) 292 movi t1, t1, 0, flags=(CSxOF,) 293 st t1, seg, riprel, disp 294}; 295 296def macroop SETLE_R 297{ 298 movi reg, reg, 1, flags=(CSxOvZF,) 299 movi reg, reg, 0, flags=(nCSxOvZF,) 300}; 301 302def macroop SETLE_M 303{ 304 movi t1, t1, 1, flags=(CSxOvZF,) 305 movi t1, t1, 0, flags=(nCSxOvZF,) 306 st t1, seg, sib, disp 307}; 308 309def macroop SETLE_P 310{ 311 rdip t7 312 movi t1, t1, 1, flags=(CSxOvZF,) 313 movi t1, t1, 0, flags=(nCSxOvZF,) 314 st t1, seg, riprel, disp 315}; 316 317def macroop SETNLE_R 318{ 319 movi reg, reg, 1, flags=(nCSxOvZF,) 320 movi reg, reg, 0, flags=(CSxOvZF,) 321}; 322 323def macroop SETNLE_M 324{ 325 movi t1, t1, 1, flags=(nCSxOvZF,) 326 movi t1, t1, 0, flags=(CSxOvZF,) 327 st t1, seg, sib, disp 328}; 329 330def macroop SETNLE_P 331{ 332 rdip t7 333 movi t1, t1, 1, flags=(nCSxOvZF,) 334 movi t1, t1, 0, flags=(CSxOvZF,) 335 st t1, seg, riprel, disp 336}; 337 338def macroop SETO_R 339{ 340 movi reg, reg, 1, flags=(COF,) 341 movi reg, reg, 0, flags=(nCOF,) 342}; 343 344def macroop SETO_M 345{ 346 movi t1, t1, 1, flags=(COF,) 347 movi t1, t1, 0, flags=(nCOF,) 348 st t1, seg, sib, disp 349}; 350 351def macroop SETO_P 352{ 353 rdip t7 354 movi t1, t1, 1, flags=(COF,) 355 movi t1, t1, 0, flags=(nCOF,) 356 st t1, seg, riprel, disp 357}; 358 359def macroop SETNO_R 360{ 361 movi reg, reg, 1, flags=(nCOF,) 362 movi reg, reg, 0, flags=(COF,) 363}; 364 365def macroop SETNO_M 366{ 367 movi t1, t1, 1, flags=(nCOF,) 368 movi t1, t1, 0, flags=(COF,) 369 st t1, seg, sib, disp 370}; 371 372def macroop SETNO_P 373{ 374 rdip t7 375 movi t1, t1, 1, flags=(nCOF,) 376 movi t1, t1, 0, flags=(COF,) 377 st t1, seg, riprel, disp 378}; 379'''
|