源于《深入理解计算机系统》by Randal E. Bryant, David R.O' Hallaron 第四章处理器体系结构篇x86-64的简易版y86-64
irmovq $15,%rbx
rrmovq %rbx,%rcx
rmmovq %rcx,-3(%rbx)
addq %rbx,%rcx
命令 python y86_64.py testCode.txt output.txt
输出结果
30f30f0000000000000020314013fdffffffffffffff6031
irmovq $-4, %rbx
irmovq $10, %rax
subq %rbx, %rax
halt
输出结果
30f3fcffffffffffffff30f00a00000000000000613000
利用脚本testVM.py,其中的机器码由示例2编译生成
from y86_64 import y86_64_vitualMachine
a = y86_64_vitualMachine(2000)
b = '30f3fcffffffffffffff30f00a00000000000000613000'
a.runCommands(b)
测试得到输出结果:
运行结束!
寄存器状态:
%rax 0e00000000000000
%rbx fcffffffffffffff
%rcx 0000000000000000
%rdx 0000000000000000
%rsi 0000000000000000
%rdi 0000000000000000
%rsp 0000000000000000
%rbp 0000000000000000
%r8 0000000000000000
%r9 0000000000000000
%r10 0000000000000000
%r11 0000000000000000
%r12 0000000000000000
%r13 0000000000000000
%r14 0000000000000000
%pc 1700000000000000
可以由示例2汇编语法得到,最终%rax=10-(-4)=14,转换为十六进制为0xe,小端表示则为0e0000000000000000,而%rbx为-4的小端表示,也就是fcffffffffffffff,整个指令执行到pc为23结束。