⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buttons.c

📁 用汇编语言编程源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* *** Breakpoints **** */static char *breakpoint_addr = NULL; /* Retain last breakpoint address */static Widget bkpt_popup = NULL;#ifdef __STDC__static voidbreakpoint_prompt (Widget button, XtPointer client_data, XtPointer call_data)#elsestatic voidbreakpoint_prompt (button, client_data, call_data)     Widget button;     XtPointer client_data, call_data;#endif{  Widget parent, dialog;  Arg args[10];  Position x, y;  if (bkpt_popup == NULL)    {      parent = XtParent (button);      XtTranslateCoords (button, (Position) 0, (Position) 0, &x, &y);      XtSetArg (args[0], XtNx, x);      XtSetArg (args[1], XtNy, y);      bkpt_popup = XtCreatePopupShell ("popup", transientShellWidgetClass,				      parent, args, TWO);      if (breakpoint_addr == NULL)	breakpoint_addr = str_copy ("");      XtSetArg (args[0], XtNlabel, "address:");      XtSetArg (args[1], XtNvalue, breakpoint_addr);      dialog = XtCreateManagedWidget ("dialog", dialogWidgetClass,				      bkpt_popup,				      args, TWO);      XtAddCallback (bkpt_popup, XtNdestroyCallback,		     breakpoint_prompt_destroyed, (XtPointer) 0);      XawDialogAddButton (dialog, "add",			  add_breakpoint_action, (XtPointer) dialog);      XawDialogAddButton (dialog, "delete",			  delete_breakpoint_action, (XtPointer) dialog);      XawDialogAddButton (dialog, "list",			  list_breakpoint_action, (XtPointer) dialog);      XawDialogAddButton (dialog, "abort command", destroy_popup_prompt,			  (XtPointer) dialog);    }  confirmAction = add_breakpoint_action;  XtPopup (bkpt_popup, XtGrabNone);}#ifdef __STDC__static voidadd_breakpoint_action (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voidadd_breakpoint_action (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  Widget dialog = (Widget) client_data;  String value = XawDialogGetValueString (dialog);  mem_addr addr;  free (breakpoint_addr);  breakpoint_addr = str_copy (value);  while (*breakpoint_addr == ' ') breakpoint_addr++;  if (isdigit (*breakpoint_addr))    addr = strtoul (value, NULL, 0);  else    addr = find_symbol_address (breakpoint_addr);  add_breakpoint (addr);  destroy_popup_prompt (NULL, (XtPointer) dialog, (XtPointer) NULL);}#ifdef __STDC__static voiddelete_breakpoint_action (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voiddelete_breakpoint_action (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  Widget dialog = (Widget) client_data;  String value = XawDialogGetValueString (dialog);  mem_addr addr;  free (breakpoint_addr);  breakpoint_addr = str_copy (value);  addr = strtoul (value, NULL, 0);  delete_breakpoint (addr);  destroy_popup_prompt (NULL, (XtPointer) dialog, (XtPointer) NULL);}#ifdef __STDC__static voidlist_breakpoint_action (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voidlist_breakpoint_action (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  list_breakpoints ();}#ifdef __STDC__static voidbreakpoint_prompt_destroyed (Widget w, XtPointer client_data,			     XtPointer call_data)#elsestatic voidbreakpoint_prompt_destroyed (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  bkpt_popup = NULL;}/* *** Help *** */#ifdef __STDC__static voidhelp_action (Widget w, XtPointer ignore, XtPointer ignored)#elsestatic voidhelp_action (w, ignore, ignored)     Widget w;     XtPointer ignore;     XtPointer ignored;#endif{  static char * msg = "\nSPIM is a MIPS R2000 simulator.\n\Copyright (C) 1990-2000 by James R. Larus, larus@cs.wisc.edu\n\n\quit  -- Exit from the simulator\n\load -- Read a file into memory\n\run -- Execute a program\n\step -- Single-step through a program\n\clear -- Reinitialize registers or memory\n\set value -- Set the value in register or memory\n\print -- Print the value in register or memory\n\breakpoint -- Set or delete a breakpoint\n\help -- This message\n\terminal -- Raise or hide console window\n\mode -- Set SPIM operating modes\n";  write_output (message_out, msg);}/* *** Terminal *** */#ifdef __STDC__static voidadd_terminal_button (Widget parent)#elsestatic voidadd_terminal_button (parent)     Widget parent;#endif{  Widget command, menu, entry;  Arg args[2];  XtSetArg (args[0], XtNwidth, button_width);  command = XtCreateManagedWidget ("terminal", menuButtonWidgetClass,				   parent, args, ONE);  menu = XtCreatePopupShell ("menu", simpleMenuWidgetClass, command,			     NULL, ZERO);  entry = XtCreateManagedWidget ("popup console", smeBSBObjectClass, menu,				 args, ONE);  XtAddCallback (entry, XtNcallback, popup_console, NULL);}/* *** Mode *** */static Widget modeCommand;#ifdef __STDC__static voidadd_mode_button (Widget parent)#elsestatic voidadd_mode_button (parent)     Widget parent;#endif{  Widget menu, entry;  Arg args[2];  XtSetArg (args[0], XtNwidth, button_width);  modeCommand = XtCreateManagedWidget ("mode", menuButtonWidgetClass,				       parent, args, ONE);  menu = XtCreatePopupShell ("menu", simpleMenuWidgetClass, modeCommand,			     NULL, ZERO);  XtSetArg (args[0], XtNleftMargin, 20);  entry = XtCreateManagedWidget ("bare", smeBSBObjectClass, menu, args, ONE);  XtAddCallback (entry, XtNcallback, select_mode_action, NULL);  if (bare_machine)    {      XtSetArg (args[0], XtNleftBitmap, mark);      XtSetValues (entry, args, ONE);    }  XtSetArg (args[0], XtNleftMargin, 20);  entry = XtCreateManagedWidget ("quiet", smeBSBObjectClass, menu, args, ONE);  XtAddCallback (entry, XtNcallback, select_mode_action, NULL);  if (quiet)    {      XtSetArg (args[0], XtNleftBitmap, mark);      XtSetValues (entry, args, ONE);    }}#ifdef __STDC__static voidselect_mode_action (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voidselect_mode_action (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  Arg args[10];  String name = XtName (w);  if (streq (name, "bare"))    {      bare_machine = !bare_machine;      if (bare_machine)	XtSetArg (args[0], XtNleftBitmap, mark);      else	XtSetArg (args[0], XtNleftBitmap, None);      XtSetValues (w, args, ONE);    }  else if (streq (name, "quiet"))    {      quiet = !quiet;      if (quiet)	XtSetArg (args[0], XtNleftBitmap, mark);      else	XtSetArg (args[0], XtNleftBitmap, None);      XtSetValues (w, args, ONE);    }}/* *** Continue *** */static Widget continue_popup = NULL;#ifdef __STDC__voidcontinue_prompt (int interrupt_seen)#elsevoidcontinue_prompt (interrupt_seen)     int interrupt_seen;#endif{  Widget dialog;  Arg args[10];  Position x, y;  char msg[256];  if (continue_popup != NULL)    XtDestroyWidget (continue_popup);  XtTranslateCoords (breakpointButton, (Position) 0, (Position) 0, &x, &y);  XtSetArg (args[0], XtNx, x);  XtSetArg (args[1], XtNy, y);  continue_popup = XtCreatePopupShell ("prompt", transientShellWidgetClass,				      breakpointButton, args, TWO);  XtAddCallback (continue_popup, XtNdestroyCallback,		 continue_prompt_destroyed, (XtPointer) 0);  if (interrupt_seen)    sprintf (msg, "execution interrupt at 0x%08x", PC);  else    sprintf (msg, "breakpoint encountered at 0x%08x", PC);  XtSetArg (args[0], XtNlabel, msg);  dialog = XtCreateManagedWidget ("continue", dialogWidgetClass,				  continue_popup, args, ONE);  XawDialogAddButton (dialog, "continue", continue_action,		      (XtPointer) dialog);  XawDialogAddButton (dialog, "abort command", destroy_popup_prompt,		      (XtPointer) dialog);  confirmAction = continue_action;  XtPopup (continue_popup, XtGrabNone);}#ifdef __STDC__static voidcontinue_action (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voidcontinue_action (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  Widget dialog = (Widget) client_data;  XtPopdown (XtParent (dialog));  destroy_popup_prompt (NULL, (XtPointer) dialog, (XtPointer) NULL);  continue_popup = NULL;  execute_program (PC, 1, 0, 1); /* Step over breakpoint */  execute_program (PC, DEFAULT_RUN_STEPS - 1, 0, 0);}#ifdef __STDC__static voidcontinue_prompt_destroyed (Widget w, XtPointer client_data,			   XtPointer call_data)#elsestatic voidcontinue_prompt_destroyed (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  continue_popup = NULL;}#ifdef __STDC__voidconfirm (Widget widget, XEvent *event, String *params, Cardinal *num_params)#elsevoidconfirm (widget, event, params, num_params)     Widget widget;     XEvent *event;     String *params;     Cardinal *num_params;#endif{  Widget dialog = XtParent (widget);  (*confirmAction) (widget, (XtPointer) dialog, (XtPointer) NULL);}#ifdef __STDC__static voiddestroy_popup_prompt (Widget w, XtPointer client_data, XtPointer call_data)#elsestatic voiddestroy_popup_prompt (w, client_data, call_data)     Widget w;     XtPointer client_data, call_data;#endif{  Widget popup = XtParent ((Widget) client_data);  confirmAction = noop;  XtDestroyWidget (popup);}#ifdef __STDC__static voidnoop (void)#elsestatic voidnoop ()#endif{}#ifdef __STDC__static Widgetpopup_two_field_dialog (Widget button, String name, String field1_label,			String field1_value, String field2_label,			String field2_value, String action_name,			void (*action) (/* ??? */), String action2_name,			void (*action2) (/* ??? */), Widget *field1_text,			Widget *field2_text)#elsestatic Widgetpopup_two_field_dialog (button, name, field1_label, field1_value,		     field2_label, field2_value, action_name, action,		     action2_name, action2, field1_text, field2_text)     Widget button;     String name, field1_label, field1_value, field2_label, field2_value,       action_name, action2_name;     void (*action) (), (*action2) ();     Widget *field1_text, *field2_text;#endif{  Widget popup, form;  Widget labelx, field1, field2;  Widget button1, button2, cancelbutton;  Widget parent = XtParent (button);  Arg args[10];  Position x, y;  static XtActionsRec action_table []    = {{"warp_to_second_dialog", warp_to_second_dialog},};  XtTranslateCoords (button, (Position) 0, (Position) 0, &x, &y);  XtSetArg (args[0], XtNx, x);  XtSetArg (args[1], XtNy, y);  popup = XtCreatePopupShell ("prompt", transientShellWidgetClass, parent,			      args, TWO);  form = XtCreateManagedWidget ("form", formWidgetClass, popup, NULL, ZERO);  XtSetArg (args[0], XtNlabel, name);  XtSetArg (args[1], XtNborderWidth, 0);  labelx = XtCreateManagedWidget ("label", labelWidgetClass, form, args, TWO);  XtSetArg (args[0], XtNfromVert, labelx);  XtSetArg (args[1], XtNborderWidth, 0);  XtSetArg (args[2], XtNlabel, field1_label);  field1 = XtCreateManagedWidget ("field1", labelWidgetClass, form, args,				  THREE);  XtSetArg (args[0], XtNfromHoriz, field1);  XtSetArg (args[1], XtNfromVert, labelx);  XtSetArg (args[2], XtNeditType, "edit");  XtSetArg (args[3], XtNstring, field1_value);  XtSetArg (args[4], XtNtype, XawAsciiString);  *field1_text = XtCreateManagedWidget ("field1_text", asciiTextWidgetClass,					form, args, FIVE);  XtOverrideTranslations (*field1_text,			  XtParseTranslationTable			  ("#override \n <Key>Return:warp_to_second_dialog()"));  XtAppAddActions (app_context, action_table, XtNumber (action_table));  XtSetArg (args[0], XtNfromVert, *field1_text);  XtSetArg (args[1], XtNborderWidth, 0);  XtSetArg (args[2], XtNlabel, field2_label);  field2 = XtCreateManagedWidget ("field2", labelWidgetClass, form, args,				  THREE);  XtSetArg (args[0], XtNfromHoriz, field1);  XtSetArg (args[1], XtNfromVert, *field1_text);  XtSetArg (args[2], XtNeditType, "edit");  XtSetArg (args[3], XtNstring, field2_value);  XtSetArg (args[4], XtNtype, XawAsciiString);  *field2_text = XtCreateManagedWidget ("field2_text", asciiTextWidgetClass,					form, args, FIVE);  XtOverrideTranslations (*field2_text,			  XtParseTranslationTable			  ("#override \n <Key>Return: confirm()"));  XtSetArg (args[0], XtNfromVert, *field2_text);  button1 = XtCreateManagedWidget (action_name, commandWidgetClass, form,				   args, ONE);  XtAddCallback (button1, XtNcallback, action, (XtPointer) form);  if (action2 != NULL)    {      XtSetArg (args[0], XtNfromHoriz, button1);      XtSetArg (args[1], XtNfromVert, *field2_text);      button2 = XtCreateManagedWidget (action2_name, commandWidgetClass, form,				       args, TWO);      XtAddCallback (button2, XtNcallback, action2, (XtPointer) form);    }  XtSetArg (args[0], XtNfromHoriz, action2 == NULL ? button1 : button2);  XtSetArg (args[1], XtNfromVert, *field2_text);  cancelbutton = XtCreateManagedWidget ("abort command", commandWidgetClass,					form, args, TWO);  XtAddCallback (cancelbutton, XtNcallback, destroy_popup_prompt,		 (XtPointer) form);  return (popup);}#ifdef __STDC__static voidwarp_to_second_dialog (Widget widget, XEvent *event, String *params,		       Cardinal *num_params)#elsestatic voidwarp_to_second_dialog (widget, event, params, num_params)     Widget widget;     XEvent *event;     String *params;     Cardinal *num_params;#endif{  Widget form = XtParent (widget);  Widget second_dialog;  second_dialog = XtNameToWidget (form, "field2_text");  if (second_dialog)    XWarpPointer (XtDisplay (second_dialog), None, XtWindow (second_dialog),		  0, 0, 0, 0, 0, 10);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -