2009-07-20 98 views
16

我想在我的Mac上編寫一些程序集,理想情況下是原生的,但我會理解它是否更容易在QEMU中學習或什麼。我如何開始學習彙編

根據處理器的不同,我看到有不同的彙編方言 - 哪種方言是最好學的?

我真的不知道從哪裏開始,關於如何在程序集中運行程序的任何指針?

回答

1

儘管有些人稱之爲「最佳」組件,但我推薦學習X86/X86-64,因爲它是使用最廣泛的。要運行該程序,只需使用GCC將其轉換爲二進制文件,然後通過控制檯運行即可。

14

我的建議是與最好的彙編程序生產者一起工作:gcc。

在C中編寫簡單的程序,然後用-S開關編譯它們。你將得到一個包含彙編代碼的文件。修補它,你會學到它。 最好的部分是,如果你想學習不同的彙編器,你可以編譯gcc作爲交叉編譯器,併爲任何支持的平臺生成彙編器。

記住要禁用與-O0的優化,否則您可能會發現奇怪的技巧。

這是世界你好彙編

.cstring 
LC0: 
    .ascii "hello world!\0" 
    .text 
.globl _main 
_main: 
    pushl %ebp 
    movl %esp, %ebp 
    pushl %ebx 
    subl $20, %esp 
    call L3 
"L00000000001$pb": 
L3: 
    popl %ebx 
    leal LC0-"L00000000001$pb"(%ebx), %eax 
    movl %eax, (%esp) 
    call L_puts$stub 
    movl $0, %eax 
    addl $20, %esp 
    popl %ebx 
    leave 
    ret 
    .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 
L_puts$stub: 
    .indirect_symbol _puts 
    hlt ; hlt ; hlt ; hlt ; hlt 
    .subsections_via_symbols 
+0

這聽起來很有用。如何將.s文件轉換爲二進制文件? – 2009-07-20 17:55:52

0

我學習了MIPS並在SPIM中測試了「計算機組織」類。

不知道是否this book可以工作,但它可能值得一試。我們使用了由教授編寫的「書」(更像是一個教程,還有一個作弊表),所以它不可用。

0

參與在彙編代碼中繁榮的社區。首先想到的是demoscene。首先,請查看productions released for x86 Macs on pouet.net。嘗試聯繫活動組中的一些編碼員。他們中的一些可能願意分享想法和代碼,甚至可以讓你有自己的想法。

這就是我今天開始回來的方式,但在Atari 8位。