ENH: add a simple assembler test

Alex
This commit is contained in:
Alexander Neundorf 2007-07-05 09:05:40 -04:00
parent a28b298aa6
commit 5021eb90b9
4 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,22 @@
project(Assembler)
set(SRCS)
# if no file has been set as source and we are on linux with an x86 processor try to use the gas/as assembler
if(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")
message(STATUS "Trying to enable ASM-ATT for Linux/x86")
enable_language(ASM-ATT)
if(CMAKE_ASM-ATT_COMPILER_WORKS)
message(STATUS "Trying to enable ASM-ATT for Linux/x86 - succeeded")
# this assembler file was created using gcc -S main.c
set(SRCS main-linux-x86-gas.s)
endif(CMAKE_ASM-ATT_COMPILER_WORKS)
endif(NOT SRCS AND CMAKE_SYSTEM_NAME MATCHES Linux AND CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86$")
if(NOT SRCS)
message(STATUS "No assembler enabled, using C")
set(SRCS main.c)
endif(NOT SRCS)
add_executable(HelloAsm ${SRCS})
set_target_properties(HelloAsm PROPERTIES LINKER_LANGUAGE C)

View File

@ -0,0 +1,29 @@
.file "main.c"
.section .rodata
.align 4
.LC0:
.string "hello assembler world, %d arguments given\n"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $20, %esp
movl (%ecx), %eax
movl %eax, 4(%esp)
movl $.LC0, (%esp)
call printf
movl $0, %eax
addl $20, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)"
.section .note.GNU-stack,"",@progbits

7
Tests/Assembler/main.c Normal file
View File

@ -0,0 +1,7 @@
#include <stdio.h>
int main(int argc, char** argv)
{
printf("hello assembler world, %d arguments given\n", argc);
return 0;
}

View File

@ -47,6 +47,7 @@ IF(BUILD_TESTING)
ADD_TEST_MACRO(MacroTest miniMacroTest)
ADD_TEST_MACRO(Framework bar)
ADD_TEST_MACRO(Properties Properties)
ADD_TEST_MACRO(Assembler HelloAsm)
# add tests with more complex invocations
ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}