96 int match_settings = 0, match_symbol = 0, match_numeric = 0;
97 int skip_settings, skip_numeric, skip_symbol;
99 if (m == NULL || name == NULL) {
100 fprintf(stderr,
"debugger_parse_name(): NULL ptr\n");
104 while (name[0] ==
'\t' || name[0] ==
' ')
111 if (((*valuep) >> 32) == 0 && (*valuep) & 0x80000000ULL)
112 (*valuep) |= 0xffffffff00000000ULL;
114 if (((*valuep) >> 32) == 0 && (*valuep) & 0x80000000ULL)
115 printf(
"WARNING: The value is not sign-extende" 116 "d. Is this what you intended?\n");
120 skip_settings = name[0] ==
'$' || name[0] ==
'@';
121 skip_numeric = name[0] ==
'#' || name[0] ==
'@';
122 skip_symbol = name[0] ==
'$' || name[0] ==
'#';
124 if (!skip_settings) {
125 char setting_name[400];
132 if (!match_settings) {
133 snprintf(setting_name,
sizeof(setting_name),
141 if (!match_settings) {
142 snprintf(setting_name,
sizeof(setting_name),
150 if (!match_settings) {
151 snprintf(setting_name,
sizeof(setting_name),
160 if (!match_settings) {
161 snprintf(setting_name,
sizeof(setting_name),
173 if (!skip_numeric && isdigit((
int)name[0])) {
175 x = strtoull(name, NULL, 0);
177 printf(
"You cannot assign like that.\n");
188 printf(
"You cannot assign like that.\n");
195 if (match_settings + match_symbol + match_numeric > 1)
247 int prec, res, i, nest;
253 while (expr[0] ==
'\t' || expr[0] ==
' ')
258 while (copy[0] && copy[
strlen(copy)-1] ==
' ')
259 copy[
strlen(copy)-1] =
'\0';
262 i = 0; prec = 2; nest = 0;
263 while (copy[i] !=
'\0') {
282 if (nest == 0 && prec > 1)
291 printf(
"Unmatching parentheses.\n");
295 if (prec == 2 && copy[0] ==
'(' && copy[
strlen(copy)-1] ==
')') {
297 copy[
strlen(copy)-1] =
'\0';
305 while (copy[i] !=
'\0') {
325 uint64_t left, right;
331 while (j>0 && copy[j-1] ==
' ') {
339 m, copy + i + 1, 0, &right);
355 (*valuep) = left + right;
358 (*valuep) = left - right;
361 (*valuep) = left ^ right;
364 (*valuep) = left & right;
367 (*valuep) = left | right;
370 (*valuep) = left * right;
373 (*valuep) = left / right;
376 (*valuep) = left % right;
int debugger_parse_name(struct machine *m, char *name, int writeflag, uint64_t *valuep)
#define CHECK_ALLOCATION(ptr)
int settings_access(struct settings *settings, const char *fullname, int writeflag, uint64_t *valuep)
void COMBINE() strlen(struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
struct symbol_context symbol_context
int get_symbol_addr(struct symbol_context *, const char *symbol, uint64_t *addr)
#define GLOBAL_SETTINGS_NAME
int debugger_parse_expression(struct machine *m, char *expr, int writeflag, uint64_t *valuep)
struct settings * global_settings