Re: [心得] 自學組合語言的必備良方!
※ 引述《brianhsu (墳墓)》之銘言:
: 有的嘛,遵照古老的傳統,一開始就寫一個 Hello World 給你,然後再告訴
: 你不要管那些 include 的黑魔法,反正程式可以跑就好--等一下,我學組
: 語就是為了要了解最底層的運作,結果你叫我不要管他?
: ======================================================================
: .section .data
: .section .text
: .global _start
: _start:
: movl $1, %eax # This is the linux kernel system call for exit
: movl $0, %ebx # This is the status number return to OS
: int $0x80 # This wake up the kernel to run exit system call
: ======================================================================
顯然, 這組語是在 linux 的 user mode 下跑的, 拿 system call
當 I/O 裝置來用.
但如果是 I/O device interface 的 I/O port 與 interrupt 處理
能在組語程式裡直接控制嗎?
譬如最常舉的例: 蜂鳴器小喇巴 與 Timer.
: ======================================================================
: 同樣的,這隻程式也是利用離開狀態做輸出--所以你用到的,都是你學過的
: 東西,沒有黑魔法,每一行每一行都可以解釋到底是在做什麼,讓你驗證你是
: 不是真的了解他。
: 另外,他用的是 GNU as 的語法,這對我而言有以下幾個好處:
: - 這是 Linux Kernel 裡面用的東西,我不用再去熟悉其他語法
: - 我只要有一台 Linux Box 就可以試著跑書裡的程式
: - 這意謂著你可以用 GCC 把 C 語言編譯到組合語言,然後和這本書裡面
: 的範例做比對,例如講到 Function 的時候,你就可以寫幾個 C 語言
: 的函數來驗證書裡講的東西。
: 所以我一定要大推這一本書的啊~~這本書真的是自學組語的必備良方,只要
: 會一點程式設計,一定可以看得懂的好東西!
這個書的範例, 若在Linux user mode 下的實例 能調用 BIOS call 嗎?
希望大大們能釋疑. 謝謝 !
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.4.12
推
02/08 01:41, , 1F
02/08 01:41, 1F
→
02/08 07:41, , 2F
02/08 07:41, 2F
→
02/08 10:05, , 3F
02/08 10:05, 3F
→
02/08 18:30, , 4F
02/08 18:30, 4F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章