我想在我的Mac上編寫一些程序集,理想情況下是原生的,但我會理解它是否更容易在QEMU中學習或什麼。我如何開始學習彙編
根據處理器的不同,我看到有不同的彙編方言 - 哪種方言是最好學的?
我真的不知道從哪裏開始,關於如何在程序集中運行程序的任何指針?
我想在我的Mac上編寫一些程序集,理想情況下是原生的,但我會理解它是否更容易在QEMU中學習或什麼。我如何開始學習彙編
根據處理器的不同,我看到有不同的彙編方言 - 哪種方言是最好學的?
我真的不知道從哪裏開始,關於如何在程序集中運行程序的任何指針?
儘管有些人稱之爲「最佳」組件,但我推薦學習X86/X86-64,因爲它是使用最廣泛的。要運行該程序,只需使用GCC將其轉換爲二進制文件,然後通過控制檯運行即可。
我的建議是與最好的彙編程序生產者一起工作: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
數(OK很多)幾年前,我拿起彼得·諾頓的書在大會http://www.amazon.com/Assembly-Language-Primer-Personal-Computer/dp/0136619010。這是開始PC組裝編程的絕妙方式。我想知道你是否仍然可以得到這個,並使用DOSbox來解決它。
我學習了MIPS並在SPIM中測試了「計算機組織」類。
不知道是否this book可以工作,但它可能值得一試。我們使用了由教授編寫的「書」(更像是一個教程,還有一個作弊表),所以它不可用。
參與在彙編代碼中繁榮的社區。首先想到的是demoscene。首先,請查看productions released for x86 Macs on pouet.net。嘗試聯繫活動組中的一些編碼員。他們中的一些可能願意分享想法和代碼,甚至可以讓你有自己的想法。
這就是我今天開始回來的方式,但在Atari 8位。
這聽起來很有用。如何將.s文件轉換爲二進制文件? – 2009-07-20 17:55:52