Tag: 仿真

x86汇编指令执行计数

大家好,我有一个代码,我想找到每个assembly线执行的次数。 我不关心是通过分析还是仿真,但我想要高精度的结果。 我曾经遇到过一个论坛,它提供了一些脚本代码,但我丢失了链接。 任何人都可以帮助我集思广益吗? 问候 编辑 :Okey我想我已经到了一半。 我根据一篇post对英特尔手册3A第16.4.5节提供的BTS(分支跟踪存储)进行了一些研究。 此function提供分支历史记录。 所以现在我需要你的帮助来查找是否有任何开源脚本或工具来执行此操作。 等待检查您的反馈 欢呼=)!

用C / C ++解码和匹配Chip 8操作码

我正在编写一个Chip 8仿真器作为仿真的介绍,我有点迷茫。 基本上,我已经阅读了Chip 8 ROM并将其存储在内存中的char数组中。 然后,按照指南,我使用以下代码检索当前程序计数器(pc)上的操作码: // Fetch opcode opcode = memory[pc] << 8 | memory[pc + 1]; 芯片8操作码每个2字节。 这是一个指南中的代码,我模糊地理解为向内存[pc]添加8个额外的位空间(使用<< 8)然后将内存[pc + 1]与它合并(使用|)并将结果存储在操作码变量中。 既然我已经隔离了操作码,我真的不知道如何处理它。 我正在使用这个操作码表,基本上我将我读取的hex操作码与该表中的操作码标识符相匹配。 另外,我意识到我正在阅读的许多操作码也包含操作数(我假设后一个字节?),这可能使我的情况更加复杂。 救命?!

虚拟并行端口仿真器

在我的计算机网络课程中,我们应该通过使用本机寄存器来学习并行端口编程(比如使用outportb之类的命令)。 我没有并行端口(因为我住在2011年)但想要练习程序(我使用dosbox安装了旧的turboc 3 IDE)。 是否有一个模拟并行端口的程序, 如此程序模拟串口?

什么是硬件仿真的正确实现?

我打算编写一个Game Boy模拟器( Z80是CPU,以防有人不熟悉它),在我做研究的时候,我发现了一些我不太确定的东西。 第一个是C是这里选择的编程语言。 这不是一个问题,但我想从今天的观点听取你的意见。 甚至不建议使用C ++。 我发现的第二件事是每个人都在使用每个操作码一个函数。 这似乎是合乎逻辑的,因为它只是一个函数调用,可能比为“ADD”指令设置一个函数更好地优化,然后你必须找出这里使用的寄存器。 但今天有多必要? 这是我应该坚持的东西,还是我应该改写我的模拟器,如果我注意到另一种可能更方便的方式就是不切割它(或多或少现代游戏机现在流入我的脑海)? 此外,一遍又一遍地编写一个“将该寄存器添加到该寄存器”的function,这种情况有点令人失望。 有没有办法从操作码映射或类似的东西自动化?