• MIPS架构——汇编代码转机器代码编译器 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:UsersALIENWAREDesktopfft_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 addsubandsltsllsrleqnemuladdiorlwsw
     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:UsersALIENWAREDesktop	est_.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:UsersALIENWAREDesktopfft_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
  • 相关阅读:
    《JFlow: Practical Mostly-Static Information Flow Control》
    《嵌入式Linux C编程》第一章笔记
    Ansible --- 通过Ansible管理地区机房中的内网机器
    等保审核 --- MySQL密码复杂度
    等保审核 --- MySQL连接控制插件
    等保审核 --- MySQL操作审计记录
    CSS中居中的完全指南(中英对照翻译)
    svn提交报database is locked
    PHP session_cache_expire 会话函数
    MySQL CONCAT_WS 函数
  • 原文地址:https://www.cnblogs.com/olivermahout/p/9333359.html
Copyright © 2020-2023  润新知