abi

    0熱度

    1回答

    過程調用有兩種方式,保存地址進行註冊或將其保存在堆棧中。我讀過程序調用的方式是特定於操作系統的。我想了解OS如何限制這一點。編譯器無法生成將地址保存在寄存器中並稍後加載的代碼,或者將其保存在堆棧中並在需要時彈出它? 只是想了解操作系統在這裏的作用。 謝謝。

    0熱度

    1回答

    是否有可能擴大這樣的棧幀: subq $1, %rsp ,如果我們只是想存儲堆棧(例如)在char。 或者我們需要將堆棧放大8倍的倍數。有沒有對齊?

    0熱度

    1回答

    我有一個使用g ++版本2.96構建的庫文件。 lib的源代碼不可用,也沒有原始開發人員的支持。 我想它採用了最新的G ++版本(4.x的說)我的應用程序聯繫起來。據我瞭解,自gcc veriosn 3.3開始,名稱修改方案已發生變化。這就是爲什麼新的鏈接器不能識別舊的lib文件中的符號。 我已經做了一些關於網絡的研究,並研究了像objcopy,objdump,C++ filt和nm等工具,並嘗試

    20熱度

    1回答

    對於我的Android應用程序,我現在使用的是ABI「x86」和「armeabi」。 armeabi用於所有ARM設備,包括armv7a和arm64-v8a。 現在我想刪除「armeabi」,並繼續使用「x86」和「armeabi-v7a」。 我還沒有在文檔中發現任何提示,即ARMv8也與ARMv7兼容 - 任何人都可以確認我的應用程序仍然可以在運行arm64-v8a的設備上工作,如果我不提供ar

    0熱度

    1回答

    Brief: 「二進制應用程序」從「動態庫」中調用另一個函數。 異常處理是reallife中ABI函數的一部分嗎? 詳細 調用約定包括像: 如何參數和到參數之前函數CALL 的參數傳遞和返回的代碼是什麼登記推。 被調用者保存寄存器 什麼寄存器是從無到有,並不需要保存 什麼做一些不尋常的寄存器(ST *,* XMM) 但會是怎樣,如果異常happend ? 我更喜歡用C++語言編寫的應用程序和動態庫

    6熱度

    1回答

    從the manual: 在GCC 5.1版本的libstdC++引入了一個新的庫ABI包括STD的新的實現::串和std ::列表。這些更改是符合2011年C++標準所必需的,該標準禁止寫入時複製字符串,並且需要列表來跟蹤它們的大小。 可以使用_GLIBCXX_USE_CXX11_ABI宏來控制庫標題使用舊ABI還是新ABI,而不管使用哪個「-std」。 我想知道使用這種「兼容性ABI」的含義是

    4熱度

    1回答

    我有以下情況(Ubuntu 15.10和Debian測試) 我有Lib A編譯沒有cxx11和lib B使用-std = C++ 11。 B包括和連接對A,A使用提升。 如果我將B鏈接到A,則在dynload期間創建的應用程序a會崩潰。 如果我編譯A沒有cxx11或B與cxx11一切正常。 我的問題:據我瞭解ABI命名空間添加應保證類型的問題。我錯了嗎? 我創建了一個示例項目來澄清問題: http

    6熱度

    1回答

    我有一些編譯ARM cortex-m設備的裸機代碼以及Beaglebone Black(BBB)的Linux內核,uBoot和應用程序的經驗(對於那些生活在搖滾中的人來說,更多功能ARM和MMU)。它使我對cortex-m代碼應該使用arm-none-eabi-gcc進行編譯(因爲沒有OS),並且BBB的應用程序代碼應該用arm-linux-gnueabi-gcc編譯(如那裏是一個可以進行系統調用

    0熱度

    1回答

    我有我的Rails應用程序的問題,試圖運行耙分貝時:在服務器遷移(或軌道下爲例)即時得到這個堆棧跟蹤: rake aborted! LoadError: /home/users/ruby/.gems/extensions/x86_64-linux/2.1.0-static/therubyracer-0.12.2/v8/init.so: ELF file OS ABI invalid - /home

    0熱度

    1回答

    我有下面的C代碼: #include <stdio.h> int function(int a, int b) { int res = a + b; return res; } int main(){ function(1,2); exit(0); } 我編譯它爲x86-64的與GCC 4.8.2(Ubuntu的14下),它產生的代碼: 0