MIPS架构下MCU指令——汇编代码转机器代码编译器 Matlab GUI

MIPS架构下的MCU,指令集包含R-Type、I-Type、J-Type三种,在数电课程设计时为了给MCU编写指令集,需要将汇编语言转化成机器代码,这里分享一下自己写的Matlab 的 GUI。

主函数 C2M

  1 function varargout = C2M(varargin)
  2 val = zeros(1,1);
  3 
  4 % C2M MATLAB code for C2M.fig
  5 %      C2M, by itself, creates a new C2M or raises the existing
  6 %      singleton*.
  7 %
  8 %      H = C2M returns the handle to a new C2M or the handle to
  9 %      the existing singleton*.
 10 %
 11 %      C2M('CALLBACK',hObject,eventData,handles,...) calls the local
 12 %      function named CALLBACK in C2M.M with the given input arguments.
 13 %
 14 %      C2M('Property','Value',...) creates a new C2M or raises the
 15 %      existing singleton*.  Starting from the left, property value pairs are
 16 %      applied to the GUI before C2M_OpeningFcn gets called.  An
 17 %      unrecognized property name or invalid value makes property application
 18 %      stop.  All inputs are passed to C2M_OpeningFcn via varargin.
 19 %
 20 %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
 21 %      instance to run (singleton)".
 22 %
 23 % See also: GUIDE, GUIDATA, GUIHANDLES
 24 
 25 % Edit the above text to modify the response to help C2M
 26 
 27 % Last Modified by GUIDE v2.5 08-Jun-2018 13:07:05
 28 
 29 % Begin initialization code - DO NOT EDIT
 30 gui_Singleton = 1;
 31 gui_State = struct('gui_Name',       mfilename, ...
 32                    'gui_Singleton',  gui_Singleton, ...
 33                    'gui_OpeningFcn', @C2M_OpeningFcn, ...
 34                    'gui_OutputFcn',  @C2M_OutputFcn, ...
 35                    'gui_LayoutFcn',  [] , ...
 36                    'gui_Callback',   []);
 37 if nargin && ischar(varargin{1})
 38     gui_State.gui_Callback = str2func(varargin{1});
 39 end
 40 
 41 if nargout
 42     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
 43 else
 44     gui_mainfcn(gui_State, varargin{:});
 45 end
 46 % End initialization code - DO NOT EDIT
 47 
 48 
 49 % --- Executes just before C2M is made visible.
 50 function C2M_OpeningFcn(hObject, eventdata, handles, varargin)
 51 % This function has no output args, see OutputFcn.
 52 % hObject    handle to figure
 53 % eventdata  reserved - to be defined in a future version of MATLAB
 54 % handles    structure with handles and user data (see GUIDATA)
 55 % varargin   command line arguments to C2M (see VARARGIN)
 56 
 57 % Choose default command line output for C2M
 58 handles.output = hObject;
 59 
 60 % Update handles structure
 61 guidata(hObject, handles);
 62 
 63 % UIWAIT makes C2M wait for user response (see UIRESUME)
 64 % uiwait(handles.figure1);
 65 
 66 
 67 % --- Outputs from this function are returned to the command line.
 68 function varargout = C2M_OutputFcn(hObject, eventdata, handles) 
 69 % varargout  cell array for returning output args (see VARARGOUT);
 70 % hObject    handle to figure
 71 % eventdata  reserved - to be defined in a future version of MATLAB
 72 % handles    structure with handles and user data (see GUIDATA)
 73 
 74 % Get default command line output from handles structure
 75 varargout{1} = handles.output;
 76 
 77 
 78 
 79 function edit1_Callback(hObject, eventdata, handles)
 80 % hObject    handle to edit1 (see GCBO)
 81 % eventdata  reserved - to be defined in a future version of MATLAB
 82 % handles    structure with handles and user data (see GUIDATA)
 83 
 84 % Hints: get(hObject,'String') returns contents of edit1 as text
 85 %        str2double(get(hObject,'String')) returns contents of edit1 as a double
 86 
 87 
 88 % --- Executes during object creation, after setting all properties.
 89 function edit1_CreateFcn(hObject, eventdata, handles)
 90 % hObject    handle to edit1 (see GCBO)
 91 % eventdata  reserved - to be defined in a future version of MATLAB
 92 % handles    empty - handles not created until after all CreateFcns called
 93 
 94 % Hint: edit controls usually have a white background on Windows.
 95 %       See ISPC and COMPUTER.
 96 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
 97     set(hObject,'BackgroundColor','white');
 98 end
 99 
100 
101 
102 function edit2_Callback(hObject, eventdata, handles)
103 % hObject    handle to edit2 (see GCBO)
104 % eventdata  reserved - to be defined in a future version of MATLAB
105 % handles    structure with handles and user data (see GUIDATA)
106 
107 % Hints: get(hObject,'String') returns contents of edit2 as text
108 %        str2double(get(hObject,'String')) returns contents of edit2 as a double
109 
110 
111 % --- Executes during object creation, after setting all properties.
112 function edit2_CreateFcn(hObject, eventdata, handles)
113 % hObject    handle to edit2 (see GCBO)
114 % eventdata  reserved - to be defined in a future version of MATLAB
115 % handles    empty - handles not created until after all CreateFcns called
116 
117 % Hint: edit controls usually have a white background on Windows.
118 %       See ISPC and COMPUTER.
119 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
120     set(hObject,'BackgroundColor','white');
121 end
122 
123 
124 % --- Executes on button press in pushbutton1.
125 function pushbutton1_Callback(hObject, eventdata, handles)
126 global val
127 % hObject    handle to pushbutton1 (see GCBO)
128 % eventdata  reserved - to be defined in a future version of MATLAB
129 % handles    structure with handles and user data (see GUIDATA)
130 
131 str1 = get(handles.edit2, 'String');    %??????
132 
133 x = size(str1, 2);  %????????
134 y = size(str1, 1);  %????????
135 %b = zeros(y, x);    %b??????????????????
136 
137 for i = 1 : y
138     
139     opcode1 = str1(i,1);
140     opcode2 = strcat(str1(i,1), str1(i,2));
141     opcode3 = strcat(str1(i,1), str1(i,2), str1(i,3));
142     opcode4 = strcat(str1(i,1), str1(i,2), str1(i,3), str1(i,4));
143     rd = strcat(str1(i, 6), str1(i, 7));
144     rs = strcat(str1(i,11), str1(i,12));
145     rt = strcat(str1(i,16), str1(i,17));
146     
147     if (x >= 19)
148         imm_sh = strcat(str1(i,15), str1(i,16), str1(i,17), str1(i, 18), str1(i, 19));
149     end
150     rt4 = strcat(str1(i,7), str1(i,8));
151     rs4 = strcat(str1(i,12), str1(i,13));
152     if (x >= 20) imm4 = strcat(str1(i,16), str1(i,17), str1(i, 18), str1(i, 19), str1(i, 20));
153     end
154     
155     rd2 = strcat(str1(i, 5), str1(i, 6));
156     rs2 = strcat(str1(i,10), str1(i,11));
157     rt2 = strcat(str1(i,15), str1(i,16));    
158     rt_w  = strcat(str1(i, 5), str1(i, 6));
159     imm_w = strcat(str1(i, 9), str1(i, 10), str1(i, 11), str1(i, 12), str1(i, 13));
160     rs_w  = strcat(str1(i, 16), str1(i, 17));
161     
162     switch opcode4         
163         case 'addi'
164             b(i,1)=0;b(i,2)=0;b(i,3)=1;b(i,4)=0;b(i,5)=0;b(i,6)=0;
165             b(i, 7:11) = rig_f(rs4); b(i, 12:16) = rig_f(rt4);
166             b(i, 17:32) = rig_n(imm4);
167             bq(i,:) = 'this is adi';
168             %bqq(i,:) = strcat('this is addi ', rs4 , '-', rt4 , '-',imm4);
169         otherwise
170             switch opcode3
171                 case 'add'
172                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0; 
173                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=0;
174                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
175                     bq(i,:) = 'this is add';
176                     %bqq(i,:) = strcat('this is add, ', rs , '-', rt , '-',rd);
177                 case 'sub'
178                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
179                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=0;
180                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
181                     bq(i,:) = 'this is sub';bqq(i,:) = strcat('this is sub, ', rs , '-', rt , '-',rd);
182                 case 'and'
183                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
184                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=1;b(i,31)=0;b(i,32)=0;
185                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
186                     bq(i,:) = 'this is and';bqq(i,:) = strcat('this is and, ', rs , '-', rt , '-',rd);
187                 case 'slt'
188                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
189                     b(i,27)=1;b(i,28)=0;b(i,29)=1;b(i,30)=0;b(i,31)=1;b(i,32)=0;
190                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
191                     bq(i,:) = 'this is slt';bqq(i,:) = strcat('this is slt, ', rs , '-', rt , '-',rd);
192                 case 'sll'
193                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;  
194                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=0;
195                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
196                      bq(i,:) = 'this is sll';
197 %                      bqq(i,:) = strcat('this is sll, ', rs , '-', rd , '-',imm_sh);
198                 case 'srl'
199                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;     
200                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=0;
201                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
202                      bq(i,:) = 'this is srl';
203 %                      bqq(i,:) = strcat('this is srl, ', rs , '-', rd , '-',imm_sh);
204                 case 'sra'
205                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;     
206                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=1;
207                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
208                      bq(i,:) = 'this is sra';
209                 case 'beq'
210                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=1;b(i,5)=0;b(i,6)=0;  
211                     b(i, 7:11) = rig_f(rd); b(i, 12:16) = rig_f(rs); b(i, 17:32) = rig_n(imm_sh);
212                     bq(i,:) = 'this is beq';
213                     %bqq(i,:) = strcat('this is beq, ', rd , '-', rs , '-',imm_sh);
214                 case 'bne'
215                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=1;b(i,5)=0;b(i,6)=1; 
216                     b(i, 7:11) = rig_f(rd); b(i, 12:16) = rig_f(rs); b(i, 17:32) = rig_n(imm_sh);
217                     bq(i,:) = 'this is bne';
218                     %bqq(i,:) = strcat('this is bne, ', rd , '-', rs , '-',imm_sh);
219                 case 'mul'
220                     b(i,1)=0;b(i,2)=1;b(i,3)=1;b(i,4)=1;b(i,5)=0;b(i,6)=0;
221                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=1;
222                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
223                     bq(i,:) = 'this is mul';bqq(i,:) = strcat('this is mul, ', rs , '-', rt , '-',rd);
224                 case 'muf'
225                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
226                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=1;b(i,31)=0;b(i,32)=1;
227                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
228                     bq(i,:) = 'this is mul';bqq(i,:) = strcat('this is mul, ', rs , '-', rt , '-',rd);
229                 otherwise    
230                             switch opcode1                    
231                                 case 'j'
232                                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=1;b(i,6)=0;
233                                     b(i, 7:32) = 9;
234                                     bq(i,:) = 'this is jrr';bqq(i,:) = strcat('this is j ', '66666666666666666666');
235                                 otherwise
236                             end
237                     end
238     end
239             
240                 switch opcode2                    
241                         case 'or'
242                             b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
243                             b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=1;b(i,31)=0;b(i,32)=1;
244                             b(i, 7:11) = rig_f(rs2); b(i, 12:16) = rig_f(rt2); b(i, 17:21) = rig_f(rd2); b(i, 22:26) = 0;
245                             bq(i,:) = 'this is orr';
246                         
247                         case 'lw'
248                              b(i,1)=1;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=1;b(i,6)=1;
249                              b(i, 7:11) = rig_f(rs_w);b(i, 12:16) = rig_f(rt_w); b(i, 17:32) = rig_n(imm_w);
250                             
251 %                              bqq(i,:) = strcat('this is lwr, ', rs_w, '-', rt_w, '-',imm_w); 
252                              bq(i,:) = 'this is lwr';
253                 
254                         case 'sw'
255                              b(i,1)=1;b(i,2)=0;b(i,3)=1;b(i,4)=0;b(i,5)=1;b(i,6)=1;  
256                              b(i, 7:11) = rig_f(rs_w);b(i, 12:16) = rig_f(rt_w); b(i, 17:32) = rig_n(imm_w);
257                              bq(i,:) = 'this is swr';
258                             otherwise         
259                         end
260 
261 
262 end     
263 
264 bb = num2str(b);
265 set(handles.edit1, 'String', bb);
266 set(handles.edit3, 'String', bq);
267 val = b;
268 
269 % --- Executes on button press in pushbutton2.
270 function pushbutton2_Callback(hObject, eventdata, handles)
271 global val
272 % hObject    handle to pushbutton2 (see GCBO)
273 % eventdata  reserved - to be defined in a future version of MATLAB
274 % handles    structure with handles and user data (see GUIDATA)
275 dlmwrite('C:\Users\ALIENWARE\Desktop\fft_test.txt', val, 'delimiter', '', 'precision', 6, 'newline','pc');
276 
277 
278 
279 function edit3_Callback(hObject, eventdata, handles)
280 % hObject    handle to edit3 (see GCBO)
281 % eventdata  reserved - to be defined in a future version of MATLAB
282 % handles    structure with handles and user data (see GUIDATA)
283 
284 % Hints: get(hObject,'String') returns contents of edit3 as text
285 %        str2double(get(hObject,'String')) returns contents of edit3 as a double
286 
287 
288 % --- Executes during object creation, after setting all properties.
289 function edit3_CreateFcn(hObject, eventdata, handles)
290 % hObject    handle to edit3 (see GCBO)
291 % eventdata  reserved - to be defined in a future version of MATLAB
292 % handles    empty - handles not created until after all CreateFcns called
293 
294 % Hint: edit controls usually have a white background on Windows.
295 %       See ISPC and COMPUTER.
296 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
297     set(hObject,'BackgroundColor','white');
298 end
299 
300 
301 % --- Executes on button press in pushbutton3.
302 function pushbutton3_Callback(hObject, eventdata, handles)
303 % hObject    handle to pushbutton3 (see GCBO)
304 % eventdata  reserved - to be defined in a future version of MATLAB
305 % handles    structure with handles and user data (see GUIDATA)
306 close(gcf);

函数rig_f 用来寻找名称对应的寄存器地址

 1 function [q] = rig_f(a)
 2 switch a
 3     case '0_'
 4         q(1)=0;q(2)=0;q(3)=0;q(4)=0;q(5)=0;
 5     case 'at'
 6         q(1)=0;q(2)=0;q(3)=0;q(4)=0;q(5)=1;    
 7     case 'v0'
 8         q(1)=0;q(2)=0;q(3)=0;q(4)=1;q(5)=0;
 9     case 'v1'
10         q(1)=0;q(2)=0;q(3)=0;q(4)=1;q(5)=1;        
11     case 'a0'
12         q(1)=0;q(2)=0;q(3)=1;q(4)=0;q(5)=0;        
13     case 'a1'
14         q(1)=0;q(2)=0;q(3)=1;q(4)=0;q(5)=1;        
15     case 'a2'
16         q(1)=0;q(2)=0;q(3)=1;q(4)=1;q(5)=0;        
17     case 'a3'
18         q(1)=0;q(2)=0;q(3)=1;q(4)=1;q(5)=1;        
19     case 't0'
20         q(1)=0;q(2)=1;q(3)=0;q(4)=0;q(5)=0;        
21     case 't1'
22         q(1)=0;q(2)=1;q(3)=0;q(4)=0;q(5)=1;
23     case 't2'
24         q(1)=0;q(2)=1;q(3)=0;q(4)=1;q(5)=0;        
25     case 't3'
26         q(1)=0;q(2)=1;q(3)=0;q(4)=1;q(5)=1;        
27     case 't4'
28         q(1)=0;q(2)=1;q(3)=1;q(4)=0;q(5)=0;        
29     case 't5'
30         q(1)=0;q(2)=1;q(3)=1;q(4)=0;q(5)=1;        
31     case 't6'
32         q(1)=0;q(2)=1;q(3)=1;q(4)=1;q(5)=0;
33     case 't7'
34         q(1)=0;q(2)=1;q(3)=1;q(4)=1;q(5)=1;        
35     case 's0'
36         q(1)=1;q(2)=0;q(3)=0;q(4)=0;q(5)=0;        
37     case 's1'
38         q(1)=1;q(2)=0;q(3)=0;q(4)=0;q(5)=1;        
39     case 's2'
40         q(1)=1;q(2)=0;q(3)=0;q(4)=1;q(5)=0;       
41     case 's3'
42         q(1)=1;q(2)=0;q(3)=0;q(4)=1;q(5)=1;
43     case 's4'
44         q(1)=1;q(2)=0;q(3)=1;q(4)=0;q(5)=0;        
45     case 's5'
46         q(1)=1;q(2)=0;q(3)=1;q(4)=0;q(5)=1;        
47     case 's6'
48         q(1)=1;q(2)=0;q(3)=1;q(4)=1;q(5)=0;       
49     case 's7'
50         q(1)=1;q(2)=0;q(3)=1;q(4)=1;q(5)=1;  
51     case 't8'
52         q(1)=1;q(2)=1;q(3)=0;q(4)=0;q(5)=0;          
53     case 't9'
54         q(1)=1;q(2)=1;q(3)=0;q(4)=0;q(5)=1;          
55     case 'k0'
56         q(1)=1;q(2)=1;q(3)=0;q(4)=1;q(5)=0;          
57     case 'k1'
58         q(1)=1;q(2)=1;q(3)=0;q(4)=1;q(5)=1;          
59     case 'gp'
60         q(1)=1;q(2)=1;q(3)=1;q(4)=0;q(5)=0;          
61     case 'sp'
62         q(1)=1;q(2)=1;q(3)=1;q(4)=0;q(5)=1;          
63     case 'fp'
64         q(1)=1;q(2)=1;q(3)=1;q(4)=1;q(5)=0;          
65     case 'ra'
66         q(1)=1;q(2)=1;q(3)=1;q(4)=1;q(5)=1;               
67     otherwise
68         q(1)=9;q(2)=9;q(3)=9;q(4)=9;q(5)=9;    
69 end

函数rig_n 用来将5位十进制数转换成16位2进制小数输出

 1 function [u] = rig_n(a)
 2 
 3 if (a(1) == '-')
 4     nu = str2num(a(2:5));
 5     num = 2^16 - nu;
 6     q = dec2bin(num, 16);
 7 else
 8     if (a(1) == '0' | a(1) == '1' | a(1) == '2' | a(1) == '3' | a(1) == '4' | a(1) == '5')
 9         nu = str2num(a);
10         q = dec2bin(nu,16);
11     end
12 end
13 
14 for i = 1 : 16
15     u(i) = str2num(q(i));
16 end

函数rig_sh 用来将3位十进制数转换成5位2进制小数输出 

1 function [u] = rig_sh(a)
2 num = str2num(a);
3 q = dec2bin(num, 5);
4 
5 for i = 1 : 5
6     u(i) = str2num(q(i))
7 end

最后欣赏一下炫酷的界面

以及附带的read me 和最终打包的Matlab程序~~

 1 *** 修正了lw和sw指令
 2 *** 打开C2M.m文件运行程序
 3 *** 立即数变成5位,lw,sw,addi等指令的数字都变成了5位
 4 
 5 
 6 支持指令名称:
 7 add\sub\and\slt\sll\srl\beq\bne\mul\addi\or\lw\sw
 8 
 9 标准形式:
10 add    $s1, $s2, $s0 
11 sub    $s1, $s2, $s0 
12 and    $s1, $s2, $s0 
13 slt    $s1, $s2, $s0 
14 sll    $s1, $s2, 00005 
15 srl    $s1, $s2, 00005 
16 beq    $s1, $s2, 00004 
17 bne    $s1, $s2, 00004 
18 mul    $s1, $s2, $s3 
19 or    $s1, $s2, $s3  
20 lw    $s1, 00005($s2)  
21 sw    $s1, 00005($s2)  
22 addi    $s1, $s2, -12
23 
24 每一个命令之后加一个tab,地址前加$,逗号之后有空格,立即数的输入为3位,如5写成005,负数-5写成-05
25 寄存器文件按照书上标准,其中$0写法为$0_
26 
27 创建txt文件:
28 地址为:line266
29 C:\Users\ALIENWARE\Desktop\test_.txt    (需要改成你自己的地址)
30 
31 *不包含 j 指令
Read_me
  1 function varargout = C2M_export(varargin)
  2 val = zeros(1,1);
  3 
  4 % C2M_export MATLAB code for C2M_export.fig
  5 %      C2M_export, by itself, creates a new C2M_export or raises the existing
  6 %      singleton*.
  7 %
  8 %      H = C2M_export returns the handle to a new C2M_export or the handle to
  9 %      the existing singleton*.
 10 %
 11 %      C2M_export('CALLBACK',hObject,eventData,handles,...) calls the local
 12 %      function named CALLBACK in C2M_export.M with the given input arguments.
 13 %
 14 %      C2M_export('Property','Value',...) creates a new C2M_export or raises the
 15 %      existing singleton*.  Starting from the left, property value pairs are
 16 %      applied to the GUI before C2M_export_OpeningFcn gets called.  An
 17 %      unrecognized property name or invalid value makes property application
 18 %      stop.  All inputs are passed to C2M_export_OpeningFcn via varargin.
 19 %
 20 %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
 21 %      instance to run (singleton)".
 22 %
 23 % See also: GUIDE, GUIDATA, GUIHANDLES
 24 
 25 % Edit the above text to modify the response to help C2M_export
 26 
 27 % Last Modified by GUIDE v2.5 19-Jul-2018 00:00:11
 28 
 29 % Begin initialization code - DO NOT EDIT
 30 gui_Singleton = 1;
 31 gui_State = struct('gui_Name',       mfilename, ...
 32                    'gui_Singleton',  gui_Singleton, ...
 33                    'gui_OpeningFcn', @C2M_export_OpeningFcn, ...
 34                    'gui_OutputFcn',  @C2M_export_OutputFcn, ...
 35                    'gui_LayoutFcn',  @C2M_export_LayoutFcn, ...
 36                    'gui_Callback',   []);
 37 if nargin && ischar(varargin{1})
 38     gui_State.gui_Callback = str2func(varargin{1});
 39 end
 40 
 41 if nargout
 42     [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
 43 else
 44     gui_mainfcn(gui_State, varargin{:});
 45 end
 46 % End initialization code - DO NOT EDIT
 47 
 48 
 49 % --- Executes just before C2M_export is made visible.
 50 function C2M_export_OpeningFcn(hObject, eventdata, handles, varargin)
 51 % This function has no output args, see OutputFcn.
 52 % hObject    handle to figure
 53 % eventdata  reserved - to be defined in a future version of MATLAB
 54 % handles    structure with handles and user data (see GUIDATA)
 55 % varargin   command line arguments to C2M_export (see VARARGIN)
 56 
 57 % Choose default command line output for C2M_export
 58 handles.output = hObject;
 59 
 60 % Update handles structure
 61 guidata(hObject, handles);
 62 
 63 % UIWAIT makes C2M_export wait for user response (see UIRESUME)
 64 % uiwait(handles.figure1);
 65 
 66 
 67 % --- Outputs from this function are returned to the command line.
 68 function varargout = C2M_export_OutputFcn(hObject, eventdata, handles) 
 69 % varargout  cell array for returning output args (see VARARGOUT);
 70 % hObject    handle to figure
 71 % eventdata  reserved - to be defined in a future version of MATLAB
 72 % handles    structure with handles and user data (see GUIDATA)
 73 
 74 % Get default command line output from handles structure
 75 varargout{1} = handles.output;
 76 
 77 
 78 
 79 function edit1_Callback(hObject, eventdata, handles)
 80 % hObject    handle to edit1 (see GCBO)
 81 % eventdata  reserved - to be defined in a future version of MATLAB
 82 % handles    structure with handles and user data (see GUIDATA)
 83 
 84 % Hints: get(hObject,'String') returns contents of edit1 as text
 85 %        str2double(get(hObject,'String')) returns contents of edit1 as a double
 86 
 87 
 88 % --- Executes during object creation, after setting all properties.
 89 function edit1_CreateFcn(hObject, eventdata, handles)
 90 % hObject    handle to edit1 (see GCBO)
 91 % eventdata  reserved - to be defined in a future version of MATLAB
 92 % handles    empty - handles not created until after all CreateFcns called
 93 
 94 % Hint: edit controls usually have a white background on Windows.
 95 %       See ISPC and COMPUTER.
 96 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
 97     set(hObject,'BackgroundColor','white');
 98 end
 99 
100 
101 
102 function edit2_Callback(hObject, eventdata, handles)
103 % hObject    handle to edit2 (see GCBO)
104 % eventdata  reserved - to be defined in a future version of MATLAB
105 % handles    structure with handles and user data (see GUIDATA)
106 
107 % Hints: get(hObject,'String') returns contents of edit2 as text
108 %        str2double(get(hObject,'String')) returns contents of edit2 as a double
109 
110 
111 % --- Executes during object creation, after setting all properties.
112 function edit2_CreateFcn(hObject, eventdata, handles)
113 % hObject    handle to edit2 (see GCBO)
114 % eventdata  reserved - to be defined in a future version of MATLAB
115 % handles    empty - handles not created until after all CreateFcns called
116 
117 % Hint: edit controls usually have a white background on Windows.
118 %       See ISPC and COMPUTER.
119 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
120     set(hObject,'BackgroundColor','white');
121 end
122 
123 
124 % --- Executes on button press in pushbutton1.
125 function pushbutton1_Callback(hObject, eventdata, handles)
126 global val
127 % hObject    handle to pushbutton1 (see GCBO)
128 % eventdata  reserved - to be defined in a future version of MATLAB
129 % handles    structure with handles and user data (see GUIDATA)
130 
131 str1 = get(handles.edit2, 'String');    %??????
132 
133 x = size(str1, 2);  %????????
134 y = size(str1, 1);  %????????
135 %b = zeros(y, x);    %b??????????????????
136 
137 for i = 1 : y
138     
139     opcode1 = str1(i,1);
140     opcode2 = strcat(str1(i,1), str1(i,2));
141     opcode3 = strcat(str1(i,1), str1(i,2), str1(i,3));
142     opcode4 = strcat(str1(i,1), str1(i,2), str1(i,3), str1(i,4));
143     rd = strcat(str1(i, 6), str1(i, 7));
144     rs = strcat(str1(i,11), str1(i,12));
145     rt = strcat(str1(i,16), str1(i,17));
146     
147     if (x >= 19)
148         imm_sh = strcat(str1(i,15), str1(i,16), str1(i,17), str1(i, 18), str1(i, 19));
149     end
150     rt4 = strcat(str1(i,7), str1(i,8));
151     rs4 = strcat(str1(i,12), str1(i,13));
152     if (x >= 20) imm4 = strcat(str1(i,16), str1(i,17), str1(i, 18), str1(i, 19), str1(i, 20));
153     end
154     
155     rd2 = strcat(str1(i, 5), str1(i, 6));
156     rs2 = strcat(str1(i,10), str1(i,11));
157     rt2 = strcat(str1(i,15), str1(i,16));    
158     rt_w  = strcat(str1(i, 5), str1(i, 6));
159     imm_w = strcat(str1(i, 9), str1(i, 10), str1(i, 11), str1(i, 12), str1(i, 13));
160     rs_w  = strcat(str1(i, 16), str1(i, 17));
161     
162     switch opcode4         
163         case 'addi'
164             b(i,1)=0;b(i,2)=0;b(i,3)=1;b(i,4)=0;b(i,5)=0;b(i,6)=0;
165             b(i, 7:11) = rig_f(rs4); b(i, 12:16) = rig_f(rt4);
166             b(i, 17:32) = rig_n(imm4);
167 %            bq(i,:) = 'this is adi';bqq(i,:) = strcat('this is addi ', rs4 , '-', rt4 , '-',imm4);
168         otherwise
169             switch opcode3
170                 case 'add'
171                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0; 
172                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=0;
173                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
174                     bq(i,:) = 'this is add';bqq(i,:) = strcat('this is add, ', rs , '-', rt , '-',rd);
175                 case 'sub'
176                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
177                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=0;
178                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
179                     bq(i,:) = 'this is sub';bqq(i,:) = strcat('this is sub, ', rs , '-', rt , '-',rd);
180                 case 'and'
181                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
182                     b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=1;b(i,31)=0;b(i,32)=0;
183                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
184                     bq(i,:) = 'this is and';bqq(i,:) = strcat('this is and, ', rs , '-', rt , '-',rd);
185                 case 'slt'
186                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
187                     b(i,27)=1;b(i,28)=0;b(i,29)=1;b(i,30)=0;b(i,31)=1;b(i,32)=0;
188                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
189                     bq(i,:) = 'this is slt';bqq(i,:) = strcat('this is slt, ', rs , '-', rt , '-',rd);
190                 case 'sll'
191                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;  
192                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=0;
193                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
194                      bq(i,:) = 'this is sll';
195 %                      bqq(i,:) = strcat('this is sll, ', rs , '-', rd , '-',imm_sh);
196                 case 'srl'
197                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;     
198                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=0;
199                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
200                      bq(i,:) = 'this is srl';
201 %                      bqq(i,:) = strcat('this is srl, ', rs , '-', rd , '-',imm_sh);
202                 case 'sra'
203                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;     
204                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=1;b(i,32)=1;
205                     b(i, 7:11) = 0; b(i, 12:16) = rig_f(rs); b(i, 17:21) = rig_f(rd); b(i, 22:26) = rig_sh(imm_sh);
206                      bq(i,:) = 'this is sra';
207                 case 'beq'
208                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=1;b(i,5)=0;b(i,6)=0;  
209                     b(i, 7:11) = rig_f(rd); b(i, 12:16) = rig_f(rs); b(i, 17:32) = rig_n(imm_sh);
210                     bq(i,:) = 'this is beq';
211 %                    bqq(i,:) = strcat('this is beq, ', rd , '-', rs , '-',imm_sh);
212                 case 'bne'
213                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=1;b(i,5)=0;b(i,6)=1; 
214                     b(i, 7:11) = rig_f(rd); b(i, 12:16) = rig_f(rs); b(i, 17:32) = rig_n(imm_sh);
215                     bq(i,:) = 'this is bne';
216 %                    bqq(i,:) = strcat('this is bne, ', rd , '-', rs , '-',imm_sh);
217                 case 'mul'
218                     b(i,1)=0;b(i,2)=1;b(i,3)=1;b(i,4)=1;b(i,5)=0;b(i,6)=0;
219                     b(i,27)=0;b(i,28)=0;b(i,29)=0;b(i,30)=0;b(i,31)=0;b(i,32)=1;
220                     b(i, 7:11) = rig_f(rs); b(i, 12:16) = rig_f(rt); b(i, 17:21) = rig_f(rd); b(i, 22:26) = 0;
221                     bq(i,:) = 'this is mul';bqq(i,:) = strcat('this is mul, ', rs , '-', rt , '-',rd);
222                 otherwise    
223                             switch opcode1                    
224                                 case 'j'
225                                     b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=1;b(i,6)=0;
226                                     b(i, 7:32) = 9;
227                                     bq(i,:) = 'this is jrr';bqq(i,:) = strcat('this is j ', '66666666666666666666');
228                                 otherwise
229                             end
230                     end
231     end
232             
233                 switch opcode2                    
234                         case 'or'
235                             b(i,1)=0;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=0;b(i,6)=0;
236                             b(i,27)=1;b(i,28)=0;b(i,29)=0;b(i,30)=1;b(i,31)=0;b(i,32)=1;
237                             b(i, 7:11) = rig_f(rs2); b(i, 12:16) = rig_f(rt2); b(i, 17:21) = rig_f(rd2); b(i, 22:26) = 0;
238                             bq(i,:) = 'this is orr';
239                         
240                         case 'lw'
241                              b(i,1)=1;b(i,2)=0;b(i,3)=0;b(i,4)=0;b(i,5)=1;b(i,6)=1;
242                              b(i, 7:11) = rig_f(rs_w);b(i, 12:16) = rig_f(rt_w); b(i, 17:32) = rig_n(imm_w);
243                             
244 %                              bqq(i,:) = strcat('this is lwr, ', rs_w, '-', rt_w, '-',imm_w); 
245                              bq(i,:) = 'this is lwr';
246                 
247                         case 'sw'
248                              b(i,1)=1;b(i,2)=0;b(i,3)=1;b(i,4)=0;b(i,5)=1;b(i,6)=1;  
249                              b(i, 7:11) = rig_f(rs_w);b(i, 12:16) = rig_f(rt_w); b(i, 17:32) = rig_n(imm_w);
250                              bq(i,:) = 'this is swr';
251                             otherwise         
252                         end
253 
254 
255 end     
256 
257 bb = num2str(b);
258 set(handles.edit1, 'String', bb);
259 set(handles.edit3, 'String', bq);
260 val = b;
261 
262 % --- Executes on button press in pushbutton2.
263 function pushbutton2_Callback(hObject, eventdata, handles)
264 global val
265 % hObject    handle to pushbutton2 (see GCBO)
266 % eventdata  reserved - to be defined in a future version of MATLAB
267 % handles    structure with handles and user data (see GUIDATA)
268 dlmwrite('C:\Users\ALIENWARE\Desktop\fft_test.txt', val, 'delimiter', '', 'precision', 6, 'newline','pc');
269 
270 
271 
272 function edit3_Callback(hObject, eventdata, handles)
273 % hObject    handle to edit3 (see GCBO)
274 % eventdata  reserved - to be defined in a future version of MATLAB
275 % handles    structure with handles and user data (see GUIDATA)
276 
277 % Hints: get(hObject,'String') returns contents of edit3 as text
278 %        str2double(get(hObject,'String')) returns contents of edit3 as a double
279 
280 
281 % --- Executes during object creation, after setting all properties.
282 function edit3_CreateFcn(hObject, eventdata, handles)
283 % hObject    handle to edit3 (see GCBO)
284 % eventdata  reserved - to be defined in a future version of MATLAB
285 % handles    empty - handles not created until after all CreateFcns called
286 
287 % Hint: edit controls usually have a white background on Windows.
288 %       See ISPC and COMPUTER.
289 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
290     set(hObject,'BackgroundColor','white');
291 end
292 
293 
294 % --- Executes on button press in pushbutton3.
295 function pushbutton3_Callback(hObject, eventdata, handles)
296 % hObject    handle to pushbutton3 (see GCBO)
297 % eventdata  reserved - to be defined in a future version of MATLAB
298 % handles    structure with handles and user data (see GUIDATA)
299 close(gcf);
300 
301 % --- Creates and returns a handle to the GUI figure. 
302 function h1 = C2M_export_LayoutFcn(policy)
303 % policy - create a new figure or use a singleton. 'new' or 'reuse'.
304 
305 persistent hsingleton;
306 if strcmpi(policy, 'reuse') & ishandle(hsingleton)
307     h1 = hsingleton;
308     return;
309 end
310 load C2M_export.mat
311 
312 
313 appdata = [];
314 appdata.GUIDEOptions = mat{1};
315 appdata.lastValidTag = 'figure1';
316 appdata.GUIDELayoutEditor = [];
317 appdata.initTags = struct(...
318     'handle', [], ...
319     'tag', 'figure1');
320 
321 h1 = figure(...
322 'PaperUnits','inches',...
323 'Units','characters',...
324 'Position',[135.8 23.5 250.2 52.2857142857143],...
325 'Visible',get(0,'defaultfigureVisible'),...
326 'Color',[0.313725490196078 0.313725490196078 0.313725490196078],...
327 'IntegerHandle','off',...
328 'MenuBar','none',...
329 'Name','C2M',...
330 'NumberTitle','off',...
331 'Tag','figure1',...
332 'Resize','off',...
333 'PaperPosition',get(0,'defaultfigurePaperPosition'),...
334 'PaperSize',[8.5 11],...
335 'PaperSizeMode',get(0,'defaultfigurePaperSizeMode'),...
336 'PaperType','usletter',...
337 'PaperTypeMode',get(0,'defaultfigurePaperTypeMode'),...
338 'PaperUnitsMode',get(0,'defaultfigurePaperUnitsMode'),...
339 'ScreenPixelsPerInchMode','manual',...
340 'HandleVisibility','callback',...
341 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
342 
343 appdata = [];
344 appdata.lastValidTag = 'edit1';
345 
346 h2 = uicontrol(...
347 'Parent',h1,...
348 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
349 'Units','characters',...
350 'HorizontalAlignment','left',...
351 'Max',50,...
352 'String',blanks(0),...
353 'Style','edit',...
354 'Position',[69.6 16.3571428571429 110.2 28.7142857142857],...
355 'BackgroundColor',[0.105882352941176 0.309803921568627 0.207843137254902],...
356 'Callback',@(hObject,eventdata)C2M_export('edit1_Callback',hObject,eventdata,guidata(hObject)),...
357 'Children',[],...
358 'ForegroundColor',[1 1 1],...
359 'CreateFcn', {@local_CreateFcn, @(hObject,eventdata)C2M_export('edit1_CreateFcn',hObject,eventdata,guidata(hObject)), appdata} ,...
360 'Tag','edit1',...
361 'FontSize',10);
362 
363 appdata = [];
364 appdata.lastValidTag = 'edit2';
365 
366 h3 = uicontrol(...
367 'Parent',h1,...
368 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
369 'Units','characters',...
370 'HorizontalAlignment','left',...
371 'Max',50,...
372 'String',blanks(0),...
373 'Style','edit',...
374 'Position',[9.8 16.3571428571429 50.2 28.8571428571429],...
375 'BackgroundColor',[0.862745098039216 0.862745098039216 0.862745098039216],...
376 'Callback',@(hObject,eventdata)C2M_export('edit2_Callback',hObject,eventdata,guidata(hObject)),...
377 'Children',[],...
378 'ForegroundColor',[0.231372549019608 0.443137254901961 0.337254901960784],...
379 'TooltipString',blanks(0),...
380 'CreateFcn', {@local_CreateFcn, @(hObject,eventdata)C2M_export('edit2_CreateFcn',hObject,eventdata,guidata(hObject)), appdata} ,...
381 'Tag','edit2',...
382 'FontSize',10,...
383 'FontWeight',get(0,'defaultuicontrolFontWeight'));
384 
385 appdata = [];
386 appdata.lastValidTag = 'pushbutton1';
387 
388 h4 = uicontrol(...
389 'Parent',h1,...
390 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
391 'Units','characters',...
392 'String','Come On Boy !',...
393 'Style',get(0,'defaultuicontrolStyle'),...
394 'Value',1,...
395 'ValueMode',get(0,'defaultuicontrolValueMode'),...
396 'Position',[9.8 2.14285714285714 140.2 10.7857142857143],...
397 'BackgroundColor',[1 0 0],...
398 'Callback',@(hObject,eventdata)C2M_export('pushbutton1_Callback',hObject,eventdata,guidata(hObject)),...
399 'Children',[],...
400 'ForegroundColor',[0.945098039215686 0.968627450980392 0.949019607843137],...
401 'Tag','pushbutton1',...
402 'FontSize',22,...
403 'FontWeight','bold',...
404 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
405 
406 appdata = [];
407 appdata.lastValidTag = 'pushbutton2';
408 
409 h5 = uicontrol(...
410 'Parent',h1,...
411 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
412 'Units','characters',...
413 'String','Create txt file',...
414 'Style',get(0,'defaultuicontrolStyle'),...
415 'Position',[159.6 2.14285714285714 60.2 10.7857142857143],...
416 'BackgroundColor',[1 1 1],...
417 'Callback',@(hObject,eventdata)C2M_export('pushbutton2_Callback',hObject,eventdata,guidata(hObject)),...
418 'Children',[],...
419 'ForegroundColor',[0.105882352941176 0.309803921568627 0.207843137254902],...
420 'Tag','pushbutton2',...
421 'FontSize',22,...
422 'FontAngle','italic',...
423 'FontWeight','bold',...
424 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
425 
426 appdata = [];
427 appdata.lastValidTag = 'text3';
428 
429 h6 = uicontrol(...
430 'Parent',h1,...
431 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
432 'Units','characters',...
433 'String','Assemble Language',...
434 'Style','text',...
435 'Position',[5.4 45.7857142857143 60.8 2.92857142857143],...
436 'BackgroundColor',[0.313725490196078 0.313725490196078 0.313725490196078],...
437 'Children',[],...
438 'ForegroundColor',[0.941176470588235 0.941176470588235 0.941176470588235],...
439 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
440 'Tag','text3',...
441 'FontSize',22,...
442 'FontAngle','italic',...
443 'FontWeight','bold');
444 
445 appdata = [];
446 appdata.lastValidTag = 'text4';
447 
448 h7 = uicontrol(...
449 'Parent',h1,...
450 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
451 'Units','characters',...
452 'String','Machine Language',...
453 'Style','text',...
454 'Position',[93.6 45.6428571428571 60.8 2.92857142857143],...
455 'BackgroundColor',[0.313725490196078 0.313725490196078 0.313725490196078],...
456 'Children',[],...
457 'ForegroundColor',[1 1 1],...
458 'ButtonDownFcn',blanks(0),...
459 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
460 'DeleteFcn',blanks(0),...
461 'Tag','text4',...
462 'FontSize',22,...
463 'FontAngle','italic',...
464 'FontWeight','bold');
465 
466 appdata = [];
467 appdata.lastValidTag = 'edit3';
468 
469 h8 = uicontrol(...
470 'Parent',h1,...
471 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
472 'Units','characters',...
473 'Max',50,...
474 'String',blanks(0),...
475 'Style','edit',...
476 'Position',[189.4 16.3571428571429 50.4 28.7142857142857],...
477 'BackgroundColor',[0 0 0],...
478 'Callback',@(hObject,eventdata)C2M_export('edit3_Callback',hObject,eventdata,guidata(hObject)),...
479 'Children',[],...
480 'ForegroundColor',[1 0.949019607843137 0.866666666666667],...
481 'CreateFcn', {@local_CreateFcn, @(hObject,eventdata)C2M_export('edit3_CreateFcn',hObject,eventdata,guidata(hObject)), appdata} ,...
482 'Tag','edit3',...
483 'FontSize',10,...
484 'FontWeight','bold');
485 
486 appdata = [];
487 appdata.lastValidTag = 'text5';
488 
489 h9 = uicontrol(...
490 'Parent',h1,...
491 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
492 'Units','characters',...
493 'String','States',...
494 'Style','text',...
495 'Position',[182.4 45.6428571428571 60.8 2.92857142857143],...
496 'BackgroundColor',[0.313725490196078 0.313725490196078 0.313725490196078],...
497 'Children',[],...
498 'ForegroundColor',[1 1 1],...
499 'ButtonDownFcn',blanks(0),...
500 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} ,...
501 'DeleteFcn',blanks(0),...
502 'Tag','text5',...
503 'FontSize',22,...
504 'FontAngle','italic',...
505 'FontWeight','bold');
506 
507 appdata = [];
508 appdata.lastValidTag = 'pushbutton3';
509 
510 h10 = uicontrol(...
511 'Parent',h1,...
512 'FontUnits',get(0,'defaultuicontrolFontUnits'),...
513 'Units','characters',...
514 'String','EXIT',...
515 'Style',get(0,'defaultuicontrolStyle'),...
516 'Position',[219.8 2.07142857142857 20.2 10.7857142857143],...
517 'BackgroundColor',[0.105882352941176 0.309803921568627 0.207843137254902],...
518 'Callback',@(hObject,eventdata)C2M_export('pushbutton3_Callback',hObject,eventdata,guidata(hObject)),...
519 'Children',[],...
520 'ForegroundColor',[1 1 1],...
521 'Tag','pushbutton3',...
522 'FontSize',14,...
523 'FontAngle','italic',...
524 'FontWeight','bold',...
525 'CreateFcn', {@local_CreateFcn, blanks(0), appdata} );
526 
527 
528 hsingleton = h1;
529 
530 
531 % --- Set application data first then calling the CreateFcn. 
532 function local_CreateFcn(hObject, eventdata, createfcn, appdata)
533 
534 if ~isempty(appdata)
535    names = fieldnames(appdata);
536    for i=1:length(names)
537        name = char(names(i));
538        setappdata(hObject, name, getfield(appdata,name));
539    end
540 end
541 
542 if ~isempty(createfcn)
543    if isa(createfcn,'function_handle')
544        createfcn(hObject, eventdata);
545    else
546        eval(createfcn);
547    end
548 end
549 
550 
551 % --- Handles default GUIDE GUI creation and callback dispatch
552 function varargout = gui_mainfcn(gui_State, varargin)
553 
554 gui_StateFields =  {'gui_Name'
555     'gui_Singleton'
556     'gui_OpeningFcn'
557     'gui_OutputFcn'
558     'gui_LayoutFcn'
559     'gui_Callback'};
560 gui_Mfile = '';
561 for i=1:length(gui_StateFields)
562     if ~isfield(gui_State, gui_StateFields{i})
563         error(message('MATLAB:guide:StateFieldNotFound', gui_StateFields{ i }, gui_Mfile));
564     elseif isequal(gui_StateFields{i}, 'gui_Name')
565         gui_Mfile = [gui_State.(gui_StateFields{i}), '.m'];
566     end
567 end
568 
569 numargin = length(varargin);
570 
571 if numargin == 0
572     % C2M_EXPORT
573     % create the GUI only if we are not in the process of loading it
574     % already
575     gui_Create = true;
576 elseif local_isInvokeActiveXCallback(gui_State, varargin{:})
577     % C2M_EXPORT(ACTIVEX,...)
578     vin{1} = gui_State.gui_Name;
579     vin{2} = [get(varargin{1}.Peer, 'Tag'), '_', varargin{end}];
580     vin{3} = varargin{1};
581     vin{4} = varargin{end-1};
582     vin{5} = guidata(varargin{1}.Peer);
583     feval(vin{:});
584     return;
585 elseif local_isInvokeHGCallback(gui_State, varargin{:})
586     % C2M_EXPORT('CALLBACK',hObject,eventData,handles,...)
587     gui_Create = false;
588 else
589     % C2M_EXPORT(...)
590     % create the GUI and hand varargin to the openingfcn
591     gui_Create = true;
592 end
593 
594 if ~gui_Create
595     % In design time, we need to mark all components possibly created in
596     % the coming callback evaluation as non-serializable. This way, they
597     % will not be brought into GUIDE and not be saved in the figure file
598     % when running/saving the GUI from GUIDE.
599     designEval = false;
600     if (numargin>1 && ishghandle(varargin{2}))
601         fig = varargin{2};
602         while ~isempty(fig) && ~ishghandle(fig,'figure')
603             fig = get(fig,'parent');
604         end
605         
606         designEval = isappdata(0,'CreatingGUIDEFigure') || (isscalar(fig)&&isprop(fig,'GUIDEFigure'));
607     end
608         
609     if designEval
610         beforeChildren = findall(fig);
611     end
612     
613     % evaluate the callback now
614     varargin{1} = gui_State.gui_Callback;
615     if nargout
616         [varargout{1:nargout}] = feval(varargin{:});
617     else       
618         feval(varargin{:});
619     end
620     
621     % Set serializable of objects created in the above callback to off in
622     % design time. Need to check whether figure handle is still valid in
623     % case the figure is deleted during the callback dispatching.
624     if designEval && ishghandle(fig)
625         set(setdiff(findall(fig),beforeChildren), 'Serializable','off');
626     end
627 else
628     if gui_State.gui_Singleton
629         gui_SingletonOpt = 'reuse';
630     else
631         gui_SingletonOpt = 'new';
632     end
633 
634     % Check user passing 'visible' P/V pair first so that its value can be
635     % used by oepnfig to prevent flickering
636     gui_Visible = 'auto';
637     gui_VisibleInput = '';
638     for index=1:2:length(varargin)
639         if length(varargin) == index || ~ischar(varargin{index})
640             break;
641         end
642 
643         % Recognize 'visible' P/V pair
644         len1 = min(length('visible'),length(varargin{index}));
645         len2 = min(length('off'),length(varargin{index+1}));
646         if ischar(varargin{index+1}) && strncmpi(varargin{index},'visible',len1) && len2 > 1
647             if strncmpi(varargin{index+1},'off',len2)
648                 gui_Visible = 'invisible';
649                 gui_VisibleInput = 'off';
650             elseif strncmpi(varargin{index+1},'on',len2)
651                 gui_Visible = 'visible';
652                 gui_VisibleInput = 'on';
653             end
654         end
655     end
656     
657     % Open fig file with stored settings.  Note: This executes all component
658     % specific CreateFunctions with an empty HANDLES structure.
659 
660     
661     % Do feval on layout code in m-file if it exists
662     gui_Exported = ~isempty(gui_State.gui_LayoutFcn);
663     % this application data is used to indicate the running mode of a GUIDE
664     % GUI to distinguish it from the design mode of the GUI in GUIDE. it is
665     % only used by actxproxy at this time.   
666     setappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]),1);
667     if gui_Exported
668         gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);
669 
670         % make figure invisible here so that the visibility of figure is
671         % consistent in OpeningFcn in the exported GUI case
672         if isempty(gui_VisibleInput)
673             gui_VisibleInput = get(gui_hFigure,'Visible');
674         end
675         set(gui_hFigure,'Visible','off')
676 
677         % openfig (called by local_openfig below) does this for guis without
678         % the LayoutFcn. Be sure to do it here so guis show up on screen.
679         movegui(gui_hFigure,'onscreen');
680     else
681         gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
682         % If the figure has InGUIInitialization it was not completely created
683         % on the last pass.  Delete this handle and try again.
684         if isappdata(gui_hFigure, 'InGUIInitialization')
685             delete(gui_hFigure);
686             gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
687         end
688     end
689     if isappdata(0, genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]))
690         rmappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]));
691     end
692 
693     % Set flag to indicate starting GUI initialization
694     setappdata(gui_hFigure,'InGUIInitialization',1);
695 
696     % Fetch GUIDE Application options
697     gui_Options = getappdata(gui_hFigure,'GUIDEOptions');
698     % Singleton setting in the GUI MATLAB code file takes priority if different
699     gui_Options.singleton = gui_State.gui_Singleton;
700 
701     if ~isappdata(gui_hFigure,'GUIOnScreen')
702         % Adjust background color
703         if gui_Options.syscolorfig
704             set(gui_hFigure,'Color', get(0,'DefaultUicontrolBackgroundColor'));
705         end
706 
707         % Generate HANDLES structure and store with GUIDATA. If there is
708         % user set GUI data already, keep that also.
709         data = guidata(gui_hFigure);
710         handles = guihandles(gui_hFigure);
711         if ~isempty(handles)
712             if isempty(data)
713                 data = handles;
714             else
715                 names = fieldnames(handles);
716                 for k=1:length(names)
717                     data.(char(names(k)))=handles.(char(names(k)));
718                 end
719             end
720         end
721         guidata(gui_hFigure, data);
722     end
723 
724     % Apply input P/V pairs other than 'visible'
725     for index=1:2:length(varargin)
726         if length(varargin) == index || ~ischar(varargin{index})
727             break;
728         end
729 
730         len1 = min(length('visible'),length(varargin{index}));
731         if ~strncmpi(varargin{index},'visible',len1)
732             try set(gui_hFigure, varargin{index}, varargin{index+1}), catch break, end
733         end
734     end
735 
736     % If handle visibility is set to 'callback', turn it on until finished
737     % with OpeningFcn
738     gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
739     if strcmp(gui_HandleVisibility, 'callback')
740         set(gui_hFigure,'HandleVisibility', 'on');
741     end
742 
743     feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
744 
745     if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
746         % Handle the default callbacks of predefined toolbar tools in this
747         % GUI, if any
748         guidemfile('restoreToolbarToolPredefinedCallback',gui_hFigure); 
749         
750         % Update handle visibility
751         set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
752 
753         % Call openfig again to pick up the saved visibility or apply the
754         % one passed in from the P/V pairs
755         if ~gui_Exported
756             gui_hFigure = local_openfig(gui_State.gui_Name, 'reuse',gui_Visible);
757         elseif ~isempty(gui_VisibleInput)
758             set(gui_hFigure,'Visible',gui_VisibleInput);
759         end
760         if strcmpi(get(gui_hFigure, 'Visible'), 'on')
761             figure(gui_hFigure);
762             
763             if gui_Options.singleton
764                 setappdata(gui_hFigure,'GUIOnScreen', 1);
765             end
766         end
767 
768         % Done with GUI initialization
769         if isappdata(gui_hFigure,'InGUIInitialization')
770             rmappdata(gui_hFigure,'InGUIInitialization');
771         end
772 
773         % If handle visibility is set to 'callback', turn it on until
774         % finished with OutputFcn
775         gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
776         if strcmp(gui_HandleVisibility, 'callback')
777             set(gui_hFigure,'HandleVisibility', 'on');
778         end
779         gui_Handles = guidata(gui_hFigure);
780     else
781         gui_Handles = [];
782     end
783 
784     if nargout
785         [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
786     else
787         feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
788     end
789 
790     if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
791         set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
792     end
793 end
794 
795 function gui_hFigure = local_openfig(name, singleton, visible)
796 
797 % openfig with three arguments was new from R13. Try to call that first, if
798 % failed, try the old openfig.
799 if nargin('openfig') == 2
800     % OPENFIG did not accept 3rd input argument until R13,
801     % toggle default figure visible to prevent the figure
802     % from showing up too soon.
803     gui_OldDefaultVisible = get(0,'defaultFigureVisible');
804     set(0,'defaultFigureVisible','off');
805     gui_hFigure = matlab.hg.internal.openfigLegacy(name, singleton);
806     set(0,'defaultFigureVisible',gui_OldDefaultVisible);
807 else
808     % Call version of openfig that accepts 'auto' option"
809     gui_hFigure = matlab.hg.internal.openfigLegacy(name, singleton, visible);  
810 %     %workaround for CreateFcn not called to create ActiveX
811 %         peers=findobj(findall(allchild(gui_hFigure)),'type','uicontrol','style','text');    
812 %         for i=1:length(peers)
813 %             if isappdata(peers(i),'Control')
814 %                 actxproxy(peers(i));
815 %             end            
816 %         end
817 end
818 
819 function result = local_isInvokeActiveXCallback(gui_State, varargin)
820 
821 try
822     result = ispc && iscom(varargin{1}) ...
823              && isequal(varargin{1},gcbo);
824 catch
825     result = false;
826 end
827 
828 function result = local_isInvokeHGCallback(gui_State, varargin)
829 
830 try
831     fhandle = functions(gui_State.gui_Callback);
832     result = ~isempty(findstr(gui_State.gui_Name,fhandle.file)) || ...
833              (ischar(varargin{1}) ...
834              && isequal(ishghandle(varargin{2}), 1) ...
835              && (~isempty(strfind(varargin{1},[get(varargin{2}, 'Tag'), '_'])) || ...
836                 ~isempty(strfind(varargin{1}, '_CreateFcn'))) );
837 catch
838     result = false;
839 end
C2M_EXPORT

猜你喜欢

转载自www.cnblogs.com/olivermahout/p/9333359.html