在gcc中可以通過 asm() 或者 __asm__() 為變數和函式指定其在彙編**中的名稱
int foo asm ("myfoo") = 2;
int func (int x, int y) asm ("myfunc");
int func (int x, int y)
如下所示,如果不指定的話,變數 foo 的彙編時名稱是: foo.1724,
$ cat ./main.c
int main(void)
$ gcc -s main.c -o main.s
$ cat main.s
...foo.1724:
.long 5
.ident "gcc: (gnu) 4.8.5 20150623 (red hat 4.8.5-44)"
.section .note.gnu-stack,"",@progbits
...
如下所示,指定之後,變數 foo 的彙編時名稱是:myfoo,
$ cat ./main.c
int main(void)
$ gcc -s main.c -o main.s
$ cat main.s
...myfoo:
.long 5
.ident "gcc: (gnu) 4.8.5 20150623 (red hat 4.8.5-44)"
.section .note.gnu-stack,"",@progbits
...
gcc編譯檔案時找不到指定函式怎麼辦
使用gcc編譯的時候,可能會出現下面的情況 雖然我們在 檔案中新增了一些必要的庫,但是編譯還是提示沒有定義函式。原因是還需要指定函式的具體路徑。首先,要對函式進行查詢。函式的查詢方法如下 在終端輸入命令 nm o lib so grep 函式名 或者 nm o usr lib a grep 函式名 ...
區分彙編中的變數和標號
概括的說 當程式中要跳轉到另一位置時,需要有乙個標識來指示新的位置,這就是標號,通過在目標位址的前面放上乙個標號,可以在指令中使用標號來代替直接使用位址。使用變數是任何程式語言都要遇到的工作。變數是計算機記憶體中已命名的儲存位置,在大部分的語言中都有很多種類的變數,如整數型 浮點型和字串等,不同的變...
static修飾全域性變數 區域性變數和函式時候的區別
static全域性變數與普通的全域性變數有什麼區別?static區域性變數和普通區域性變數有什麼區別?static函式與普通函式有什麼區別?全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方...