我想在我的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