如何开始学习大会

我想在我的Mac上编写一些程序,理想的是本地的,但是如果在QEMU或其他东西中学习更容易,我会明白。

我看到有不同的装配方式取决于处理器 – 什么方言是“最好的”学习?

我真的不知道从哪里开始,任何关于如何甚至在程序集中运行程序的指针?

我的建议是与最好的汇编商在那里采取行动:gcc。

在C中编写简单的程序,然后用-S开关编译它们。你将得到一个包含汇编代码的文件。修补它,你会学习它。
最好的部分是,如果你想学习一个不同的汇编器,你可以编译gcc作为交叉编译器,并为任何支持的平台生成汇编程序。

记住要使用-O0禁用优化,否则可能会发现奇怪的技巧。

这是汇编程序中的Hello World

.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
相关文章
相关标签/搜索