|
29 | 29 | (error n "expects symbol; given ~v" x)) |
30 | 30 | (values a x))) |
31 | 31 |
|
| 32 | +(define check:cmov |
| 33 | + (λ (a1 a2 n) |
| 34 | + (unless (register? a1) |
| 35 | + (error n "expects register; given ~v" a1)) |
| 36 | + (unless (or (register? a2) (offset? a2)) |
| 37 | + (error n "expects register or offset; given ~v" a2)) |
| 38 | + (values a1 a2))) |
| 39 | + |
32 | 40 | (define check:arith |
33 | 41 | (λ (a a1 a2 n) |
34 | 42 | (unless (register? a1) |
|
187 | 195 | (instruct Jle (x) check:target) |
188 | 196 | (instruct Jg (x) check:target) |
189 | 197 | (instruct Jge (x) check:target) |
| 198 | +(instruct Jo (x) check:target) |
| 199 | +(instruct Jno (x) check:target) |
| 200 | +(instruct Jc (x) check:target) |
| 201 | +(instruct Jnc (x) check:target) |
| 202 | +(instruct Cmove (dst src) check:cmov) |
| 203 | +(instruct Cmovne (dst src) check:cmov) |
| 204 | +(instruct Cmovl (dst src) check:cmov) |
| 205 | +(instruct Cmovle (dst src) check:cmov) |
| 206 | +(instruct Cmovg (dst src) check:cmov) |
| 207 | +(instruct Cmovge (dst src) check:cmov) |
| 208 | +(instruct Cmovo (dst src) check:cmov) |
| 209 | +(instruct Cmovno (dst src) check:cmov) |
| 210 | +(instruct Cmovc (dst src) check:cmov) |
| 211 | +(instruct Cmovnc (dst src) check:cmov) |
190 | 212 | (instruct And (dst src) check:src-dest) |
191 | 213 | (instruct Or (dst src) check:src-dest) |
192 | 214 | (instruct Xor (dst src) check:src-dest) |
|
195 | 217 | (instruct Push (a1) check:push) |
196 | 218 | (instruct Pop (a1) check:register) |
197 | 219 | (instruct Lea (dst x) check:lea) |
| 220 | +(instruct Not (x) check:register) |
198 | 221 | (instruct Div (den) check:register) |
199 | 222 |
|
200 | 223 | (instruct Offset (r i) check:offset) ;; May need to make this not an instruction |
|
240 | 263 | (nasm-label? x) |
241 | 264 | (not (register? x)))) |
242 | 265 |
|
| 266 | + |
243 | 267 | (provide (rename-out [a86:instruction? instruction?])) |
244 | 268 | (define (a86:instruction? x) |
245 | 269 | (or (instruction? x) |
|
0 commit comments