# hello.ic # global declarations .globl __ic_main # data section .data .align 4 # dispatch vector for class Hello _Hello_DV: .long _Hello_main # string constants (in IC format) .long 12 str1: .ascii "Hello world\n" # text (code) section .text #---------------------------------------------------- .align 4 _Hello_main: push %ebp # prologue mov %esp,%ebp push $str1 # println(...) call __LIB_println add $4, %esp mov $0, %eax # return 0 _epilogue_Hello_main: mov %ebp,%esp # epilogue pop %ebp ret #---------------------------------------------------- .align 4 __ic_main: push %ebp # prologue mov %esp,%ebp push $4 # o = new Hello call __LIB_allocateObject add $4, %esp movl $_Hello_DV, (%eax) push 8(%ebp) # o.main(args) push %eax mov (%eax), %eax call *(%eax) add $8, %esp mov $0, %eax _epilogue_ic_main: mov %ebp,%esp # epilogue pop %ebp ret