㈠ 如何給GCC指定編譯的地址
有兩種辦法
1. gcc D:\XXX\main.c 用這個命令來編譯你的C文件,把上面的目錄、文件換成你的。
2. 在CMD里,cd到D盤,然後cd到你的C文件目錄下,執行gcc main.c即可
㈡ 程序編譯時地址如何分配
如果是具備操作系統的情況下,C語言,linux為例,程序會根據系統配置和elf格式自動載入進入內存。
起始地址是可執行文件的base_of_image欄位指定的值,前提是不開啟PIE保護。
而匯編器內部定址只是一個偏移地址。
所以最終,一條指令的位置 = 起始地址+ 他在模塊的偏移。
如果不具備操作系統,純粹的嵌入式環境下,地址是自己指定的。
㈢ 編譯原理傳地址問題
傳址的話,這么講你應該更明白,因為y(A):=x+y(1),y(1)=x+y(2),這時的y(2)才等於A,所以y:=x+x+y
㈣ C語言中函數的地址在編譯時就分配好了,為什麼不會產生地址沖突運行時剛好那個地址有別的程序在用
函數的具體武理地址不是編譯的時候分配的,是運行的時候由系統分配的!如果你看一下生成的匯編代碼你就會發現進入函數時的操作是將返回地址壓棧後通過CALL跳轉到函數開頭處執行,壓棧的函數地址都是偏移量,實際地址在運行時通過基址加減偏移量得出。另外通常程序的內存空間是專用的,兩個程序的空間互不沖突,普通用戶程序不可以訪問其他程序的內存空間!
㈤ 全局變數的編譯地址和運行地址
在代碼執行時,會對初始化話變數和未初始化變數進行賦值,未初始化的一般為零,見匯編代碼里。CPU執行時的差異只是從RAM中取指令和從Flash中取指令的差異。
㈥ 反匯編出來的地址是運行地址還是編譯地址
winhex是文件地址,也就是你稱的編譯地址吧
OD和IDA的都是運行地址,也就是運行時地址
㈦ 編譯系統(如:VC++6.0)編譯時對變數和變數地址如何處理
int a =5;//定義一個變數,並初始化
int *p //定義一指針變數
p = &a; //把a的地址賦給指針變數p
int &a = b;//a是b的引用。也就是b的一個別名。只要改變a的值,b的值也就改變了
㈧ 編譯時,變數的內存地址已經決定好了這種事情不是在運行時才做的么怎麼編譯時就完成了
不會的,
你編譯得到的文件是目標文件(.obj或.o),它和可執行文件(.exe或.out)幾乎沒有什麼不同
唯一的不同就是目標文件中用到地址的地方全部用0或其他地址指針代替,
可執行文件被執行時,操作系統會對他進行重定向操作,將目標文件中不明確的地址指針轉換為明確的地址
所以,程序代碼的地址的確定時間是在操作系統將程序裝載入內存時,並不是編譯時
滿意請採納,不滿意請追問
㈨ 編譯後的段地址是什麼性質的地址
你可以把地址連續的內存單元看成一個段,這個段裡面的所有物理地址(物理地址是由段地址跟偏移地址組成的)都有相同的段地址
㈩ 給個c語言編譯軟體~帶上地址!最好是完整版的!
二級C語言加油站: http://hi..com/jsj08
Visual C++ 6.0各種版本,最小4M