[問題] 新手學控制晶片 定義的疑問

看板ASM (組合語言)作者 (saber.c)時間15年前 (2009/09/01 17:59), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
小弟最近在碰S3C2440 跟 MCP2510這兩塊晶片 我看她們範例裡面都有對記憶體位置(暫存器)作定義 如下 2440的定義檔 http://codepad.org/EvnsNpvr MCP2510定義檔 http://codepad.org/QAjyZNqn 以上都是節錄一小部份XD 藉由一些範例給我的感覺 是否要控制晶片 通常都會由一個定義檔把各個暫存器記憶體位置定義出來 如2440那些 他是定義成一個"指標"變數 指向該記憶體位置 然後藉由該變數=0xffff 這樣 去設定裡面的旗標 但是看到MCP2510內的定義檔後 我這樣的想法就被推翻了 裡面單純定義#define MCP2510_XXX 0xf 這樣 偏偏他也是暫存器位置呀= =".. 這樣子 設定時他只是個變數 不是記憶體位置 不是很怪嗎?? 修改的話 變成是修改該變數..=_=? 不知道我的想法哪邊有問題 請大大指教 我只是個初入門檻的新手XDDD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.22.88

09/01 18:07, , 1F
它不是有註解是offset嗎?所以不是實際位址.是相對位址
09/01 18:07, 1F

09/01 18:13, , 2F
=_=??/相對 這個是??
09/01 18:13, 2F

09/02 17:05, , 3F
就是相對位址.你應該還會找到一個 define xxx_base 0xAAA 的
09/02 17:05, 3F

09/02 17:05, , 4F
東西吧. 把base addr 加上offset 就是實際的位址
09/02 17:05, 4F
文章代碼(AID): #1AdF2DdI (ASM)
文章代碼(AID): #1AdF2DdI (ASM)