2013年1月20日 星期日

Lab1 筆記

Linker用的 address

VMA (Link address)
    表示Linker在鍊結symbol table時所採用的base address.
    也就是程式希望運行的記憶體位置

LMA (load address)
    表示希望被讀到實體記憶體的哪個位置


Assembly 語法

AT&T syntax
mov %ax,%bx
 -> 將ax的值存入bx, 即可說AT&T格式是 OP src des

x:

      .long   1
      .long   7
      .long   9
      .long   14
-> 宣告一個空間, 由4個long佔據, 其初值為1, 7, 9, 14, 組語可用label x
   來存取到這個空間 
 

GDB 指令

x/Ni addr : 由addr連續印出N行組語指令, addr可用$eip
x/Nx addr : 由addr連續印出N組記憶體內容

si: 單步執行下一個組語指令
s:  單步執行下個c指令n:  執行下個c指令(執行完完整function)
c:  執行程式
b:  設break point
     *addr -> 在 address處設 break point

i r: info registers的縮寫, 可以觀看CPU registers的情形
p var_name : 印出變數內容

list: 列出目前 c程式碼
quit: 結束 

Print Section

    va_start, va_arg藉由直接存取被compiler放置於stack中的參數來達到,
可以讓Function可以傳入任意長度的參數.

挑戰題

參考文章
VGA Color Palette
ASCII Escape Rule
設計想法:
  1. 將Escape的顏色轉換成 VGA format, 丟給VGA來顯示顏色
  2. 在vprintfmt中建立Escape rule的parser


-- 未完 --

沒有留言:

張貼留言