Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

GNU AS簡介

2.563 Aufrufe

Veröffentlicht am

GNU AS簡介,歡迎debug

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

GNU AS簡介

  1. 1. Wen Liao GNU AS 簡介 台南市,虎尾寮
  2. 2. Disclaimer 投影片資料為作者整理資料及個人意見,沒有經 過嚴謹確認,請讀者自行斟酌
  3. 3. 目標 介紹GNU AS以及binutils的用法
  4. 4. 測試環境:Guest OS
  5. 5. 測試環境:Qemu
  6. 6. 關於GNU AS ● 簡稱gas,或是直接as ● 組合語言是也 ○ 把組合語言轉成binary的object file
  7. 7. gas原始碼組成 ● Symbol ○ label也是一個symbol ● directive ○ .開頭的字 ○ 有些通用,有些和CPU平台相關 ● Expression ● Instruction ○ 最後會轉成機械碼的東西
  8. 8. 今天不會提到的 ● 巨集 ● 條件式directive ● 除錯相關directive ● 硬體架構相關
  9. 9. 還記得linker script嘛? ● Sections ○ .text ○ .bss ○ .data ○ .rodata ○ … ● 進入點 ● 這些全部要自行處理
  10. 10. 還記得ABI嘛? ● 一樣要自己處理 ○ Call convention ○ Frame pointer ○ Call stack
  11. 11. 在組合語言中一切自己來 ● printf?沒這東西 ● 開檔案?寫東西,請愛用system call
  12. 12. 兩光的Hello World directives
  13. 13. 兩光的Hello World section
  14. 14. 兩光的Hello World symbol
  15. 15. 兩光的Hello World system call r0 = write(1, hello_str, hello_len) exit(r0)
  16. 16. 兩光的Hello World expression
  17. 17. 上面是爛程式碼示範 ● 好的程式碼示範 ( 感謝Scott Tasi大大)
  18. 18. 回家作業:九九乘法表 ● 檔案結構 ○ Makefile ○ main.S ○ multi_table.S ● 執行 ● nm 觀察 ● objdump 反組譯比對。看Symbol ● gdb ○ Hint ■ --gstabs+ 參數

×