ENH: add a simple assembler test
Alex
This commit is contained in:
parent
a28b298aa6
commit
5021eb90b9
22
Tests/Assembler/CMakeLists.txt
Normal file
22
Tests/Assembler/CMakeLists.txt
Normal 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)
|
29
Tests/Assembler/main-linux-x86-gas.s
Normal file
29
Tests/Assembler/main-linux-x86-gas.s
Normal 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
7
Tests/Assembler/main.c
Normal 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;
|
||||||
|
}
|
@ -47,6 +47,7 @@ IF(BUILD_TESTING)
|
|||||||
ADD_TEST_MACRO(MacroTest miniMacroTest)
|
ADD_TEST_MACRO(MacroTest miniMacroTest)
|
||||||
ADD_TEST_MACRO(Framework bar)
|
ADD_TEST_MACRO(Framework bar)
|
||||||
ADD_TEST_MACRO(Properties Properties)
|
ADD_TEST_MACRO(Properties Properties)
|
||||||
|
ADD_TEST_MACRO(Assembler HelloAsm)
|
||||||
|
|
||||||
# add tests with more complex invocations
|
# add tests with more complex invocations
|
||||||
ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}
|
ADD_TEST(TargetName ${CMAKE_CTEST_COMMAND}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user