* @brief Provides basic mathematical operations on values represented as strings.
* @date 2003
* @author Mathias Heil
- * @version $Id$
*/
#include "config.h"
};
/** converting a digit to a binary string */
-static const char *binary_table[16] = {
+static char const *const binary_table[] = {
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"
};
/* get ready for the next letter */
str++;
len--;
- } /* while (len > 0 ) */
+ }
if (sign < 0)
do_negate((const char*) buffer, (char*) buffer);
sc_shrI(val1, shift_cnt, bitsize, sign, buffer);
}
+void sc_shrsI(const void *val1, long shift_cnt, int bitsize, int sign, void *buffer)
+{
+ carry_flag = 0;
+
+ DEBUGPRINTF_COMPUTATION(("%s >>s %ld ", sc_print_hex(value1), shift_cnt));
+ do_shr((const char*) val1, calc_buffer, shift_cnt, bitsize, sign, 1);
+
+ DEBUGPRINTF_COMPUTATION(("-> %s\n", sc_print_hex(calc_buffer)));
+
+ if ((buffer != NULL) && (buffer != calc_buffer)) {
+ memmove(buffer, calc_buffer, calc_buffer_size);
+ }
+}
+
void sc_shrs(const void *val1, const void *val2, int bitsize, int sign, void *buffer)
{
long offset = sc_val_to_long(val2);