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

📄 construct_registerobj.m

📁 这是一个关于MATLAB的函数
💻 M
字号:
function rr = construct_registerobj(rr,args)
%   Copyright 2002 The MathWorks, Inc.
%   $Revision: 1.4 $  $Date: 2002/04/03 19:47:44 $

nargs = length(args);

if( nargin < 2 | ~ishandle(rr) ),
    error('A memory object can only be created from a valid link object, see REGISTER');
end

if(mod(nargs,2)~=0)
    error(['REGISTER constructor requires property and value ', ...
            'arguments to be specified in pairs.']);
end

% Get property / value pairs from argument list

for i = 1:2:nargs,
    prop = lower(args{i});
    val  = args{i+1};
    
    % Argument checking
    if isempty(prop)  % ignore nulls
        continue;
    elseif ~ischar(prop),
        error('PPROPERTY must be a string entry');
    end
    if ~isempty( strmatch(prop,{'procsubfamily','name','bitsperstorageunit','link','timeout','maxaddress','numberofstorageunits'},'exact')),
        rr.(prop) = val;
       
    elseif strcmp(prop,'reginfo'),
        reginfo    = val;
        if ~isempty(reginfo)
            rr.regid   = getregid(reginfo); % parse out register ID from this string
            rr.regname = registerNameLookup(rr); % 'type'-assumed to have been initialized
                                                 %  by derived class (ex numeric)
        end
    else
        error(['Unknown property ''' prop ''' specified for REGISTER object.'])
    end
    
end            

%--------------------------------------
function id = getregid(reginfo)
% Parse out register ID from reginfo string
index = strfind(reginfo,'Register:');
start = index + 9; % length('Register:') = 9
openparindex = findstr('(',reginfo(start:end)); % find first open parenthesis after 'Register:';
last = start + openparindex(1) - 2;             
idstr = deblankall(reginfo(start:last));
id = str2num(idstr);% this marks the end of the register ID string

%--------------------------------------
function str = deblankall(str)
str = deblank( str(end:-1:1) );
str = deblank( str(end:-1:1) );

%-------------------------------------------
function name = registerNameLookup(rr)
% Determine which register this ID points to

[regnameList,regidList] = p_registerlist(rr);
index = find(rr.regid==regidList);
name = { regnameList{index} };
% idcheck = regidlookup(name{1});
if ( (rr.link.subfamily>=96 & rr.link.subfamily<=112) & rr.wordsize>16 ) | ...
   ( (rr.link.subfamily>=80) & rr.wordsize>16 ),
    name = horzcat(name,{regnameList{index+1}});
end


%-------------------------------------------
function id = regidlookup(name)
lookuptable = [];
lookuptable = setfield(lookuptable,{1},'PC'  ,0);

lookuptable = setfield(lookuptable,{1},'A0'  ,9);
lookuptable = setfield(lookuptable,{1},'A1'  ,10);
lookuptable = setfield(lookuptable,{1},'A2'  ,11);
lookuptable = setfield(lookuptable,{1},'A3'  ,12);
lookuptable = setfield(lookuptable,{1},'A4'  ,13);
lookuptable = setfield(lookuptable,{1},'A5'  ,14);
lookuptable = setfield(lookuptable,{1},'A6'  ,15);
lookuptable = setfield(lookuptable,{1},'A7'  ,16);
lookuptable = setfield(lookuptable,{1},'A8'  ,17);
lookuptable = setfield(lookuptable,{1},'A9'  ,18);
lookuptable = setfield(lookuptable,{1},'A10' ,19);
lookuptable = setfield(lookuptable,{1},'A11' ,20);
lookuptable = setfield(lookuptable,{1},'A12' ,21);
lookuptable = setfield(lookuptable,{1},'A13' ,22);
lookuptable = setfield(lookuptable,{1},'A14' ,23);
lookuptable = setfield(lookuptable,{1},'A15' ,24);

lookuptable = setfield(lookuptable,{1},'B0'  ,25);
lookuptable = setfield(lookuptable,{1},'B1'  ,26);
lookuptable = setfield(lookuptable,{1},'B2'  ,27);
lookuptable = setfield(lookuptable,{1},'B3'  ,28);
lookuptable = setfield(lookuptable,{1},'B4'  ,29);
lookuptable = setfield(lookuptable,{1},'B5'  ,30);
lookuptable = setfield(lookuptable,{1},'B6'  ,31);
lookuptable = setfield(lookuptable,{1},'B7'  ,32);
lookuptable = setfield(lookuptable,{1},'B8'  ,33);
lookuptable = setfield(lookuptable,{1},'B9'  ,34);
lookuptable = setfield(lookuptable,{1},'B10' ,35);
lookuptable = setfield(lookuptable,{1},'B11' ,36);
lookuptable = setfield(lookuptable,{1},'B12' ,37);
lookuptable = setfield(lookuptable,{1},'B13' ,38);
lookuptable = setfield(lookuptable,{1},'B14' ,38);
lookuptable = setfield(lookuptable,{1},'B15' ,40);
% lookuptable = setfield(lookuptable,{1},'SP'  ,40);
% lookuptable = setfield(lookuptable,{1},'FP'  ,40);
id = lookuptable.(name);

% [EOF] construct_register.m
    


⌨️ 快捷键说明

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