这更像是一个有趣的问题.我正在研究SC61860 CPU,它是1987年夏普PC-1360掌上电脑的8位CPU(也用于PC-1401和1403).它的指令集实际上并不包含异或.它有AND,OR,比较,减法和加法指令.
我尝试了一些ANDing和ORing值的变体来获得XOR会产生的结果,但没有运气.我希望避免比较,但看起来我没有选择.
如果您有兴趣,可以查看说明书.
顺便说一下,这个CPU非常适合学习装配.好的,简单的,足够慢(768kHz),机器语言明显快于使用BASIC内置的计算机;)我通常用C/C++/Java编程.装配一直呼吸着新鲜空气.
Eug*_*Sh. 11
从布尔代数我们知道:
A XOR B = (NOT(A) AND B) OR (A AND NOT(B))
Run Code Online (Sandbox Code Playgroud)
更新:感谢@Brett Hale,@ slabetman,因为CPU出人意料地不支持该NOT
指令,它可以通过算术否定和减法来模拟,假设2的补码为负数表示):
NOT(A) = (-1) - A
Run Code Online (Sandbox Code Playgroud)
或者在不同的负表示的情况下,-1
可以用相应的存储类型最大值替换(即8位寄存器为255或16位寄存器为65565).
归档时间: |
|
查看次数: |
537 次 |
最近记录: |