Professional Assembly Language
沒有很 professional,不過是在 IA-32 和 Linux 環境下用 GNU assembler 寫 assembly 很好的入門書
我覺得這本書比較不是著重在 assembly 的硬功夫,所以怎麼在 C 裡用 inline assembly,assembly 怎麼呼叫 C,C 怎麼呼叫 assembly,Linux system call 等等,就佔了好幾章
反而 GNU assembler 的 directive 沒介紹幾個,macro 也沒講到
而且程式寫法上也沒有講到多少好的寫法,像是 14 章範例程式裡字串長度都還用寫死的方法
string1: .asciz "This is a TEST, of the conversion program!n" length: .int 43
其實只要
string1: .asciz "This is a TEST, of the conversion program!n" Length = (. - string1)
之後用到 Length 時,前面加上 $ 就可以了(movl $Length, %ecx)
比起來,我接觸的第一本 assembly 書,Assembly Language for Intel-Based Computers, 4th,在 assembly 的功夫上就扎實得多了
不過因為我現在需要的是了解 GNU assembler 和在 C 裡用 inline assembly,而不是 用 assembly 寫 OS,所以這本書還算足夠。至於 GNU assembler 介紹不夠詳細的地方,就再自己翻翻文件好了。