Tag: 操作码

用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操作码与该表中的操作码标识符相匹配。 另外,我意识到我正在阅读的许多操作码也包含操作数(我假设后一个字节?),这可能使我的情况更加复杂。 救命?!

从C执行二进制机器代码

按照这个说明,我设法只产生528字节的大小a.out(当gcc main.c最初给我8539字节的大文件时)。 main.c是: int main(int argc, char** argv) { return 42; } 但我已经从这个汇编文件中构建了一个a.out: 电源: ; tiny.asm BITS 64 GLOBAL _start SECTION .text _start: mov eax, 1 mov ebx, 42 int 0x80 有: me@comp# nasm -f elf64 tiny.s me@comp# gcc -Wall -s -nostartfiles -nostdlib tiny.o me@comp# ./a.out ; echo $? 42 me@comp# wc -c a.out 528 […]