diff options
| author | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
|---|---|---|
| committer | Xavier ASUS <xavi92psx@gmail.com> | 2019-10-18 00:31:54 +0200 |
| commit | 268a53de823a6750d6256ee1fb1e7707b4b45740 (patch) | |
| tree | 42c1799a9a82b2f7d9790ee9fe181d72a7274751 /src/regression/pointer1.c | |
| download | sdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz | |
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'src/regression/pointer1.c')
| -rw-r--r-- | src/regression/pointer1.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/src/regression/pointer1.c b/src/regression/pointer1.c new file mode 100644 index 0000000..23075b4 --- /dev/null +++ b/src/regression/pointer1.c @@ -0,0 +1,134 @@ +#include "gpsim_assert.h" + +// Pointer tests + +unsigned char failures = 0; +unsigned char dummy; + +unsigned int aint0 = 0; +unsigned int aint1 = 0; +unsigned char achar0 = 0; +unsigned char achar1 = 0; +unsigned char *acharP = 0; + +unsigned char buff[10]; + +void +done() +{ + ASSERT(MANGLE(failures) == 0); + PASSED(); +} + +void +f1 (unsigned char *ucP) +{ + + if (ucP == 0) + { + failures++; + return; + } + + if (*ucP) + failures++; +} + +void +f2 (unsigned int *uiP) +{ + + if (uiP == 0) + { + failures++; + return; + } + + if (*uiP) + failures++; + +} + + +unsigned char * +f3 (void) +{ + + return &achar0; +} + + +void f4(unsigned char *ucP, unsigned char uc) +{ + + if(!ucP) { + failures++; + return; + } + + if(*ucP != uc) + failures++; + +} + +void init_array(char start_value) +{ + unsigned char c; + + for(c=0; c<sizeof(buff); c++) + buff[c] = start_value++; + +} + +void check_array(char base_value) +{ + unsigned char c; + + for(c=0; c<sizeof(buff); c++) + if(buff[c] != (base_value+c)) + failures++; + +} + +void index_by_pointer(unsigned char *index, unsigned char expected_value) +{ + if(buff[*index] != expected_value) + failures++; +} + + +void +main (void) +{ + + init_array(4); + check_array(4); + + if(buff[achar0 + 7] != 4+7) + failures++; + + dummy = buff[achar0]; + + if(dummy != 4) + failures++; + + if(dummy != (buff[achar0+1] -1)) + failures++; + + index_by_pointer(&dummy, 8); + + f1 (&achar0); + f2 (&aint0); + + acharP = f3 (); + if ((acharP == 0) || (*acharP)) + failures++; + achar0 = 42; + if(*acharP != 42) + failures++; + + achar0 = 5; + f4(&achar0, achar0); + + done (); +} |
