※ 引述《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 等,都被看作記憶體般來存取...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.59.19.226