Tag: CPU架构

编写您的第一个Gameboy游戏

Gameboy是(现在仍然是)非常出色的设备。 不仅从游戏玩家的角度,而且从程序员的角度,程序员都希望了解更多有关计算机如何在更基础的水平上工作的信息。 汇编语言,CPU操作码,内存映射的I / O,所有这些都是计算机工作的基础,但是由于我们要进行更高级别的抽象,因此在日常工作中我们并没有真正使用太多东西现在。 但是了解我们日常设备在幕后的工作方式既有趣又有用。 结合起来,复古计算和游戏总是很有趣! 就像我说的,Gameboy就是一个完美的装置。 它于1989年发布,具有基于Z80的8位CPU(与您可能知道的Intel 8080不太相似),具有16位地址空间和1 MHz的时钟速度,以及大约16kb的RAM 。 可执行文件随盒带提供,盒带的大小从32kb到数兆字节不等。 墨盒本身只是一块硬件,因此它还可以具有额外的RAM,电池供电的RAM以保存游戏,甚至还可以提供更疯狂的物品(例如相机)。 而且很容易找到用于运行和调试程序的仿真器。 在本文中,我们将编写一个简单的Gameboy游戏,该游戏仅在屏幕上显示一个精灵。 那不是什么大游戏,但是要达到这一点还需要学习很多东西。 我们将使用我在Swift中编写的汇编程序,您可以在Github上找到适用于macOS和Linux的汇编程序。 本文将首先说明Gameboy CPU的工作方式,然后介绍如何编写汇编程序,然后在Gameboy上图形如何工作,最后,我们将把所有这些部分组合成一个工作程序。 让我们开始学习一下Gameboy的工作原理! CPU和地址空间 理解Gameboy以及实际上任何计算系统的工作原理,主要有两部分:CPU,它接收指令并执行它们,以及地址空间,该地址空间用于访问不同的硬件组件。 当一条指令在CPU上运行时,它会以某种方式修改系统的状态。 通过内存地址访问的CPU内部状态或某些硬件组件的状态。 Gameboy具有16位地址空间,这意味着您可以访问0到65535(十六进制的$ ffff)的内存地址。 Gameboy的硬件已将这些地址中的每一个都映射到某种硬件。 它可能是盒式ROM,声音芯片或某些通用RAM。 编译汇编代码时,它将转换为二进制文件,即一系列操作码。 操作码是一个数字,表示CPU可以执行的一条指令。 例如,操作码$ 00表示NOP,这是一个空操作。 $ 82是一条ADD指令,它将两个数字加在一起。 您的二进制文件是这些操作码的一长串列表,它们位于盒带的ROM中。 盒式ROM存储器映射到Gameboy存储器空间的前半部分,这意味着从$ 0000到$ 7fff的所有地址(这些值更容易用十六进制数字表示。16位值为4密码十六进制数字)。 这意味着,如果您读取介于$ 0000和$ 7fff之间的任何地址,它将从盒带中读取一个字节。 请注意,地址空间是16位的,这意味着到内存位置的每个地址都在$ 0000和$ ffff之间,但是存储在这些位置中的值是8位,因此在$ 00和$ ff之间。 Gameboy CPU将其状态保存在内部寄存器中。 每个寄存器都是一个8位或16位值,直接存储在CPU内部,因此读写非常快,因为它不必通过地址总线与任何其他硬件组件通信。 Gameboy有八个8位寄存器和两个16位寄存器: 8位寄存器:A,F,B,C,D,E,H,L 16位寄存器:SP(堆栈指针),PC(程序计数器) SP寄存器跟踪堆栈的大小(我们将在后面介绍),而PC寄存器跟踪CPU当前在代码中的位置。 就像地址空间一样,这两个寄存器是16位的。 […]

使用90%CPU的UIViewanimation

您好我有animation循环,但正在使用我的iPhone CPU处理的90%,正在加热手机。 我做错了什么? 有人可以给我一些build议吗? 谢谢 -(void)nextAnimation:(float)previousWidth { //picture loop imageViewTop.image = imageViewBottom.image; imageViewBottom.image = [imageArray objectAtIndex:[imageArray count] – 1]; [imageArray insertObject:imageViewBottom.image atIndex:0]; [imageArray removeLastObject]; imageViewTop.alpha = 1.0; imageViewBottom.alpha = 0.0; [UIView animateWithDuration:4.0 animations:^{ imageViewTop.alpha = 0.0; imageViewBottom.alpha = 1.0; } completion:^(BOOL completed){ [self nextAnimation:stringsize.width]; } ];

缺less所需的体系结构x86_64

我有一个旧的项目,我重新编译为uodate,现在显示这个错误信息: …. missing required architecture x86_64 in file myLibrary.a …. 我已经尝试了各种技巧,我可以find在networking上searchmissing required architecture x86_64 in file ,但没有成功。 任何人都知道如何妥善处理这个问题? 我正在使用Xcode版本7.0.1。 运行: lipo -info myLibrary.a 说明: Architectures in the fat file: myLibrary.a are: armv7 arm64 我已经能够添加armv7s而不是x86_64。

如何在运行时获得iOS设备CPU架构?

有没有办法在运行时识别iOS设备的CPU架构? 谢谢。