我想知道是否有更好的方法来写这个:
无效 readtcp_c(无符号字符 c) { 挥发性字符 *a; 易失性int *p; 易失性int *q; a = (char *)APPLE_REG_A; // a = REG A 的内存映射地址 *a = c + 128; // 将 c + 128 存储在 REG A p = (int *)APPLE_SUB; // p = 6502 sub的地址 *p = TCP_WRITE;// 将 TCP 入口点存储在地址 p 中 p = (int *)软卡;// p = 软卡地址的地址 q = (int *)*p; // q = 软卡地址 *q = 0; // 将 0 写入软卡地址 }
IANS,我必须读/写特定地址。'a' 只是对内存映射寄存器 (6502) 的写入。接下来的两行类似,只是我写的是一个 6502 入口点的地址,以备后用。最后 3 行是我必须将 0 写入存储在 SOFTCARD 中的地址的地方。写入此地址会触发对上述入口点的调用。
这是我认为可以更短的最后 3 行。也许不是。如果其他对可以写成一行,那就太好了。该代码可以正常工作并编译(sdcc),没有错误或警告。
谢谢。
更新:我想我可以替换:
p = (int *)软卡;// p = 软卡地址的地址 q = (int *)*p; // q = 软卡地址 *q = 0; // 将 0 写入软卡地址
和:
p = (int *)*(int *)软卡; *p = 0;
它在没有警告的情况下编译并运行。但它可读吗?再次感谢。