`((,(string-append "mov____(%" r0 "),%" r2))
(,(string-append "mov____%" r2 ",(%" r1 ")")))))
+(define (x86_64:byte-r0-mem->r1-mem info)
+ (let* ((registers (.registers info))
+ (r0 (get-r0 info))
+ (r1 (get-r1 info))
+ (r2 (car registers))
+ (l2 (r->l r2)))
+ `((,(string-append "mov____(%" r0 "),%" l2))
+ (,(string-append "mov____%" l2 ",(%" r1 ")")))))
+
+(define (x86_64:word-r0-mem->r1-mem info)
+ (let* ((registers (.registers info))
+ (r0 (get-r0 info))
+ (r1 (get-r1 info))
+ (r2 (car registers))
+ (x2 (r->x r2)))
+ `((,(string-append "mov____(%" r0 "),%" x2))
+ (,(string-append "mov____%" x2 ",(%" r1 ")")))))
+
+(define (x86_64:long-r0-mem->r1-mem info)
+ (let* ((registers (.registers info))
+ (r0 (get-r0 info))
+ (r1 (get-r1 info))
+ (r2 (car registers))
+ (e2 (r->e r2)))
+ `((,(string-append "mov____(%" r0 "),%" e2))
+ (,(string-append "mov____%" e2 ",(%" r1 ")")))))
+
(define (x86_64:r0+value info v)
(let ((r0 (get-r0 info)))
`(,(if (< (abs v) #x80) `(,(string-append "add____$i8,%" r0) (#:immediate1 ,v))
(byte-r . ,x86_64:byte-r)
(byte-r->local+n . ,x86_64:byte-r->local+n)
(byte-r0->r1-mem . ,x86_64:byte-r0->r1-mem)
- (byte-r0->r1-mem . ,x86_64:byte-r0->r1-mem)
+ (byte-r0-mem->r1-mem . ,x86_64:byte-r0-mem->r1-mem)
(byte-signed-r . ,x86_64:byte-signed-r)
(call-label . ,x86_64:call-label)
(call-r . ,x86_64:call-r)
(long-r . ,x86_64:long-r)
(long-r->local+n . ,x86_64:long-r->local+n)
(long-r0->r1-mem . ,x86_64:long-r0->r1-mem)
+ (long-r0-mem->r1-mem . ,x86_64:long-r0-mem->r1-mem)
(long-signed-r . ,x86_64:long-signed-r)
(mem->r . ,x86_64:mem->r)
(nop . ,x86_64:nop)
(word-r . ,x86_64:word-r)
(word-r->local+n . ,x86_64:word-r->local+n)
(word-r0->r1-mem . ,x86_64:word-r0->r1-mem)
+ (word-r0-mem->r1-mem . ,x86_64:word-r0-mem->r1-mem)
(word-signed-r . ,x86_64:word-signed-r)
(xor-zf . ,x86_64:xor-zf)
(zf->r . ,x86_64:zf->r)