我想知道是否有寫這更好的辦法地址讀取值:如何更好地從一個指向地址
void readtcp_c(unsigned char c) { volatile char *a; volatile int *p; volatile int *q; a = (char *)APPLE_REG_A; // a = memory mapped address for REG A *a = c + 128; // store c + 128 in REG A p = (int *)APPLE_SUB; // p = address of 6502 sub *p = TCP_WRITE; // store TCP entry point in address p p = (int *)SOFTCARD; // p = address of softcard address q = (int *)*p; // q = softcard address *q = 0; // write 0 to softcard address }
IANS,我要讀/寫的具體地址。 'a'只是對存儲器映射寄存器的寫入(6502)。接下來的兩行是相似的,只不過我正在寫入稍後要使用的6502入口點的地址。最後3行是我必須向存儲在SOFTCARD中的地址寫入0的地方。寫入該地址會觸發對上述入口點的調用。
這是我認爲可以縮短的最後3行。也許不是。如果其他線對可以寫成單線,那也會很棒。代碼工作並編譯(sdcc),沒有錯誤或警告。
謝謝。
更新:我想我可以代替:
p = (int *)SOFTCARD; // p = address of softcard address q = (int *)*p; // q = softcard address *q = 0; // write 0 to softcard address
有:
p = (int *)*(int *)SOFTCARD; *p = 0;
它編譯沒有警告和運行。但它是否可讀?再次感謝。
Apple? 6502?註冊A? Softcard?請爲了所有神聖的愛,請告訴我你在開玩笑:-)有人實際上還在使用這些機器嗎? – paxdiablo