※ 引述《abcdefghi (蠍子)》之銘言:
: ※ 引述《ykjiang (Yukuan)》之銘言:
: : 直接給個例子比較不容易發生誤解 :)
: : http://www.cse.unsw.edu.au/~cs1721/05s2/lectures/slide43.html
: OK, 那就以上述的投影片為例子,
: 假設現在需要關閉 interrupt, 你怎麼用 C 像 "讀取一般memory" 來存取
: CPU Status Register 中的 interrupt enable/disable ?
OK,
我知道問題的癥結了。
以常見的 8 bit MCU 來說,例如:
類似 RISC 架構的 PIC, AVR 及
CISC 的 8051 等。
它們都是 memory map I/O and memory map register,
所以在存取 register 跟存取一般的 memory 比起來,
在 machine code 的層次確實是無明顯區別的。
而在 assembly code 的層次,習慣用法看來,表面上好
像是有區別,實際上它是把 register 名稱組譯成對應的
記憶體位址。且你也可以不透過 register 名稱,而直接
以它在 memory map 上的位置來存取。兩者在 machine
code 的層次上看來並無二致,只是表示法的不同罷了。
問題出現在 C code 的層次,要不要對這些 registers 及
一般的 memory 用不同的方法看待,是取決於 compiler 的
設計。
我想這裡才是發生爭議的地方。
以上,也或許是我 miss 掉甚麼了,歡迎提出來討論。 ^___^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.104.3