0
我有一些簡單的靜態數組定義在c文件(const int data_input [1024];)和I需要從我的彙編代碼訪問它。什麼是正確的做法?ARM-GAS:如何加載某些c文件(PIC和常規代碼)中定義的靜態數組的地址
到目前爲止,我一直在做這樣說:
.global data_input data_input_ptr: .word data_input my_function: adr r1, data_input_ptr bx lr
據我所知,ADR是僞操作站到LDR R1,= data_input_ptr或類似的東西。
對我來說,我這樣做似乎不是非常正確:首先,adr r1,data_input可能會直接使用pc相對尋址,如果它在鏈接時檢測到可能的話。 另一個問題是關於PIC:如果代碼必須與位置無關,該怎麼辦?那麼它是如何工作的,如果data_input_ptr的值必須由加載程序初始化(我對此是否正確?)
我居然做到了,那是因爲我有問題,與 - C++重整(我不得不做出符號的extern「C」) - 靜態數組將不得不重新申報成非靜態等 所以,似乎最好將所有這些髒工作委託給編譯器,並傳遞包含指向靜態數組的指針的額外參數。 – Pavel