※ 引述《ykjiang (Yukuan)》之銘言:
: ※ 引述《abcdefghi (蠍子)》之銘言:
: : 不同的CPU有不同的Assembly, 跟計算相關的部份 C 可以應付,
: : 和Address相關的部份用 C 配合 Link Editor 也可以處理, 不過
: : 有些控制 CPU Status 的指令, 就只能用 Assembly 了, 例如
: : 在Bootstrap的時候要把Register和Cache都設好, 或者在OS中的
: : Critical Section也要把Interrupt關起來, 一般Boot Section
: : 只做一些簡單的工作, 用Assembly就好了, 如果真的想多做一點
: : 事再配合一些C Function, 不過在load整個系統時, 一樣得用
: : Assembly才行, 因為要jump到主系統時, 還是得控制CPU的Status.
: 就大多數 MCU 而言,
: 即使在這樣的場合下,C/C++ 也大都足以擔任 :)
: 因為對這些晚近的 MCU 而言,
: 讀取這些 register 跟讀取一般的 memory ,
: 其使用的指令並無不同。
: 這就跟所謂的 memory-map I/O 類似,
: 整顆 MCU 的 I/O port, registers 等,都被看作記憶體般來存取...
你講的應該是 device register 而已吧?
請問你用的是那一顆MCU可以像 "讀取一般memory" 來存取 CPU Register ?
如果是RISC的架構, 而讀取 cpu register 和讀取 memory 的指令又要一樣,
那真是難以想像這樣的 machine code 會長什麼樣子?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.23.107