Re: [心得] 自學組合語言的必備良方!

看板Programming作者 (ggg)時間15年前 (2010/02/08 01:14), 編輯推噓1(103)
留言4則, 4人參與, 最新討論串2/5 (看更多)
※ 引述《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
這本書只專注在 User Mode 而已。
02/08 07:41, 2F

02/08 10:05, , 3F
學組語一開始就學IO控制有意義嗎?
02/08 10:05, 3F

02/08 18:30, , 4F
他老人家不扯東扯西就不是他老人家了.....
02/08 18:30, 4F
文章代碼(AID): #1BRlKG5H (Programming)
文章代碼(AID): #1BRlKG5H (Programming)