gpt4 book ai didi

assembly - 如何存储来自 Assembly 68K CCR 的进位位?

转载 作者:行者123 更新时间:2023-12-04 02:24:34 27 4
gpt4 key购买 nike

我确实在手册中找到了一条来自 CCR 指令的 MOVE... http://www.freescale.com/files/archives/doc/ref_manual/M68000PRM.pdf

但我不断收到“无效寻址模式”错误。我尝试了不同形式的语法,无论如何我只想存储进位位,而不是整个 CCR。这些都是我试过但没有运气的语法。它非常明确地说大小必须是单词。

MOVE.W CCR,D6
MOVE.W CCR,CARRY
MOVE CCR,D6
MOVE CCR,CARRY
MOVE.B CCR,D6
MOVE.B CCR,CARRY

纳达。我究竟做错了什么?有没有更好的方法来专门存储进位位 (C)?

最佳答案

您不应该直接访问 SR/CCR 来获取单个标志的状态。

68K 系列有非常方便的 S(cc) 指令(根据条件设置),它采用 (cc) 的条件谓词,并产生一个反射(reflect)条件的字节。示例:

SEQ D0

如果零标志被清除,D0.b 变为 0x00,否则为 0xFF。所有条件谓词都对此指令有效,包括基于进位的测试(SCS、SCC)。

CCR 的问题首先是它在 MC68000 上不允许(它根本不存在,它是 MC68010 引入的扩展)。我不确定从 CCR 执行 MOVE 是否会触发 IllegalInstruction,或者它是否从 SR 静默转换为 MOVE(它们具有几乎相同的编码,只有 MOVE SR 是字大小,MOVE CCR 是字节大小)。

您也不应该改用 SR 的 MOVE,这会在 x > 0 的所有 MC680x0 上爆炸,因为该指令在这些处理器上仅是主管(特权)。

访问 SR 需要非常小心,因为家庭内部存在这些差异。

关于assembly - 如何存储来自 Assembly 68K CCR 的进位位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23880257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com