From: Antonio Ospite Date: Tue, 5 Nov 2013 11:19:21 +0000 (+0100) Subject: Initial import X-Git-Url: https://git.ao2.it/experiments/inline-assembly.git/commitdiff_plain/afea09167a73b3ad1a9c41eaf581cb6b88b03044?ds=inline Initial import --- afea09167a73b3ad1a9c41eaf581cb6b88b03044 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1a0bcb9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.o +inline-asm-sum diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1e601a4 --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +CFLAGS = -std=c99 -pedantic -pedantic-errors -Wall -g3 -O2 -D_ANSI_SOURCE_ +CFLAGS += -fno-common \ + -Wall \ + -Wdeclaration-after-statement \ + -Wextra \ + -Wformat=2 \ + -Winit-self \ + -Winline \ + -Wpacked \ + -Wp,-D_FORTIFY_SOURCE=2 \ + -Wpointer-arith \ + -Wlarger-than-65500 \ + -Wmissing-declarations \ + -Wmissing-format-attribute \ + -Wmissing-noreturn \ + -Wmissing-prototypes \ + -Wnested-externs \ + -Wold-style-definition \ + -Wredundant-decls \ + -Wsign-compare \ + -Wstrict-aliasing=2 \ + -Wstrict-prototypes \ + -Wundef \ + -Wunreachable-code \ + -Wunused-variable \ + -Wwrite-strings + +ifneq ($(CC),clang) + CFLAGS += -Wunsafe-loop-optimizations +endif + + +inline-asm-sum: inline-asm-sum.o + +clean: + rm -f *~ *.o inline-asm-sum + +test: inline-asm-sum + valgrind --leak-check=full --show-reachable=yes ./inline-asm-sum diff --git a/inline-asm-sum.c b/inline-asm-sum.c new file mode 100644 index 0000000..4f9c2f0 --- /dev/null +++ b/inline-asm-sum.c @@ -0,0 +1,40 @@ +/* + * inline-asm-sum - an example of inline assembly use + * + * Copyright (C) 2013 Antonio Ospite + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include + +static int sum(int a, int b) +{ + return a + b; +} + +int main(void) +{ + int a; + int b; + int ret; + + a = 13; + b = 27; + + ret = sum(a, b); + + printf("%d + %d = %d\n", a, b, ret); + return 0; +}