From bd729c5d578edf91eb10a1ba7560f57475ff5a96 Mon Sep 17 00:00:00 2001 From: John Washam Date: Mon, 29 Aug 2016 21:00:04 -0700 Subject: [PATCH] Changed for 32-bit. --- CMakeLists.txt | 1 + assembly/CMakeLists.txt | 5 +++++ assembly/main.c | 2 +- assembly/main.s | 40 ++++++++++++++++++++++++---------------- 4 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 assembly/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b47002..43ee6c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,3 +16,4 @@ add_subdirectory(quick_sort) add_subdirectory(graphs) add_subdirectory(interview) add_subdirectory(forking) +add_subdirectory(assembly) diff --git a/assembly/CMakeLists.txt b/assembly/CMakeLists.txt new file mode 100644 index 0000000..2d5a520 --- /dev/null +++ b/assembly/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.5) +project(asm1_proj) + +set(SOURCE_FILES main.c) +add_executable(asm1 ${SOURCE_FILES}) \ No newline at end of file diff --git a/assembly/main.c b/assembly/main.c index 7d62c8a..b6a75b4 100644 --- a/assembly/main.c +++ b/assembly/main.c @@ -1,7 +1,7 @@ #include /* * Just a simple program so I can inspect the assembly code. - * gcc -O2 -S -c main.c + * gcc -m32 -S -c main.c */ int main(int argc, char *argv[]) { diff --git a/assembly/main.s b/assembly/main.s index ab635e0..d8105bc 100644 --- a/assembly/main.s +++ b/assembly/main.s @@ -3,24 +3,32 @@ .globl _main .align 4, 0x90 _main: ## @main - .cfi_startproc ## BB#0: - pushq %rbp -Ltmp0: - .cfi_def_cfa_offset 16 -Ltmp1: - .cfi_offset %rbp, -16 - movq %rsp, %rbp -Ltmp2: - .cfi_def_cfa_register %rbp - leaq L_.str(%rip), %rdi + pushl %ebp + movl %esp, %ebp + pushl %esi + subl $36, %esp + calll L0$pb +L0$pb: + popl %eax + movl 12(%ebp), %ecx + movl 8(%ebp), %edx + leal L_.str-L0$pb(%eax), %eax movl $12345, %esi ## imm = 0x3039 - xorl %eax, %eax - callq _printf - movl $61453, %eax ## imm = 0xF00D - popq %rbp - retq - .cfi_endproc + movl $0, -8(%ebp) + movl %edx, -12(%ebp) + movl %ecx, -16(%ebp) + movl %eax, (%esp) + movl $12345, 4(%esp) ## imm = 0x3039 + movl %esi, -20(%ebp) ## 4-byte Spill + calll _printf + movl $61453, %ecx ## imm = 0xF00D + movl %eax, -24(%ebp) ## 4-byte Spill + movl %ecx, %eax + addl $36, %esp + popl %esi + popl %ebp + retl .section __TEXT,__cstring,cstring_literals L_.str: ## @.str