我正在为优秀的旧GameBoy开发一个模拟器,我正面临一些问题,如何必须实现一些基本的操作代码.
现在我正在实施AND操作; 前几个(0xA0 - > 0xA3; 0xA6和0xA7)非常简单,但寄存器H,L的AND操作有点不同.
您可以在以下链接下载z80的文档: um0080.pdf(第172页)
这里有一些例子来说明我的意思(使用伪代码),基本上我做了什么:
AND A,H(注意位移)
(read HL register; >> 8) save in cache C
R->C = R->HL >> 8;
perform AND operation with cache
AND_H(R->C);
R->A &= R->C;
Run Code Online (Sandbox Code Playgroud)
和A,L(注意位屏蔽)
(read HL register; &0xFF) save in cache C
R->C = R->HL &0xFF;
Run Code Online (Sandbox Code Playgroud)
我知道所有的位操作,我知道他们做了什么,但似乎我无法弄清楚为什么需要这样做.我有一些理论(如果我错了,请纠正我:-)):
我已经理解的是,寄存器H和L基本上是寄存器HL,它是一个16位寄存器.由于CPU /总线只能处理8位操作,因此需要将其拆分; 或更多的逻辑建议:由于它只有一个寄存器,H和L的值在寄存器中被屏蔽,它们只需要彼此分开(高/低半字节?).
如果有人能够让我更清楚,我会非常感激,因为我只想拥有更多的背景知识(所有这些内容如何在内部运作),所以对我来说非常重要,因为我知道自己在做什么.
因为电子邮件地址的本地部分可能有变音符号(例如 \xc3\xb6\xc3\xa4\xc3\xbc),所以我需要将它们转换为 ascii,因为 Zend-Mail 无法处理它 -它总是抛出无效标头异常。
\n\n所以有这个 php 函数idn_to_ascii可以将域名转换为 IDNA ASCII 格式。问题是我不确定如何正确使用它。
\n\n让我们使用这个电子邮件地址:test\xc3\xb6@domain.com
\n\n// doesn\'t work (unknown error):\nidn_to_ascii(\'test\xc3\xb6@domain.com\') --> xn--test@domain-ufb.com\nRun Code Online (Sandbox Code Playgroud)\n\n如果我只是转换电子邮件地址的本地部分,它似乎可以工作:
\n\nidn_to_ascii(\'test\xc3\xb6\') --> xn--test-8qa@domain.com\nRun Code Online (Sandbox Code Playgroud)\n\n但是如果域部分也包含变音符号怎么办?
\ne.g. 测试\xc3\xb6@domain\xc3\xb6.com
我应该做这样的事情吗?
\n\nidn_to_ascii(\'test\xc3\xb6\').\'@\'.idn_to_ascii(\'domain\xc3\xb6.com\')\nRun Code Online (Sandbox Code Playgroud)\n\n另外在 php-homepage 上有人写了一条评论说你必须跳过高级域部分(并且官方文档是错误的):\n请参阅此处
\n\nidn_to_ascii(\'domain\xc3\xb6\') // right\nidn_to_ascii(\'domain\xc3\xb6.com\') // wrong\nRun Code Online (Sandbox Code Playgroud)\n\n我现在很困惑:|
\n有人有这方面的经验吗?最糟糕的是:我什至无法测试它,因为我没有带元音变音的电子邮件地址。
我需要将 mysql 数据库转换为 postgres。只是为了测试,我在本地安装了一个mysql数据库,并创建了一个带有一张表的简单测试数据库。现在我不想使用选项进行 SQL 转储--compatible=postgresql:
mysqldump test --compatible=postgresql -uroot > ~/Documents/testdump.sql
Run Code Online (Sandbox Code Playgroud)
但我总是收到以下错误消息:
Invalid mode to --compatible: postgresql
Run Code Online (Sandbox Code Playgroud)
我正在使用 OSX 并使用自制软件安装了 mysql
mysql 版本是: stable 8.0.12 (bottled)
我也用 Docker 容器和最新版本尝试过它,8.0.12但它也给了我同样的错误信息。我需要兼容模式,所以我可以使用带有 python 脚本的转储将其转换为 postgresql。
编辑:
我降级到5.7它现在可以工作了 - 我仍然想知道为什么它不能与新版本一起使用。