Changeset 20926

Show
Ignore:
Timestamp:
10/07/08 21:05:49 (6 weeks ago)
Author:
fujidig
Message:

memexpand を実装

Location:
lang/javascript/hsp-on-js/trunk/src
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/hsp-on-js/trunk/src/builtin-funcs.js

    r20912 r20926  
    317317                this.strsize = new IntValue(i); 
    318318                this.stat.assign(0, new IntValue(c)); 
     319        }, 
     320        0x1f: function memexpand(v, size) { 
     321                this.scanArgs(arguments, 'vN'); 
     322                size = size ? size.toIntValue()._value : 0; 
     323                v.expandByteSize(size); 
    319324        }, 
    320325        0x20: function memcpy(destVar, srcVar, length, destOffset, srcOffset) { 
  • lang/javascript/hsp-on-js/trunk/src/hsp-array.js

    r20657 r20926  
    106106                throw new HSPError(ErrorCode.UNSUPPORTED_FUNCTION, 
    107107                                   VarTypeNames[this.getType()]+" 型はメモリ読み込みに対応していません");  
     108        }, 
     109        expandByteSize: function expandByteSize(offset, size) { 
     110                throw new HSPError(ErrorCode.TYPE_MISMATCH, 
     111                                   VarTypeNames[this.getType()]+" 型はメモリ領域の拡張に対応していません");  
    108112        } 
    109113}; 
  • lang/javascript/hsp-on-js/trunk/src/run-in-shell.js

    r20912 r20926  
    2121function main(){ 
    2222        var data = [ 
    23 '\x48\x53\x50\x33\x01\x03\x00\x00\x02\x00\x00\x00\xb3\x01\x00\x00', 
    24 '\x60\x00\x00\x00\x08\x01\x00\x00\x68\x01\x00\x00\x15\x00\x00\x00', 
    25 '\x7d\x01\x00\x00\x04\x00\x00\x00\x81\x01\x00\x00\x32\x00\x00\x00', 
    26 '\xb3\x01\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00', 
    27 '\xb3\x01\x00\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00', 
    28 '\xb3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
    29 '\x01\x20\x00\x00\x00\x00\x08\x00\x02\x00\x06\x00\x08\x20\x1a\x00', 
    30 '\x01\x00\x00\x00\x04\x40\x00\x00\x04\x40\x82\x00\x08\x20\x1a\x00', 
    31 '\x01\x00\x00\x00\x04\x40\x01\x00\x04\x40\xa0\x00\x08\x20\x1d\x00', 
    32 '\x01\x00\x01\x00\x01\x40\x00\x00\x04\x40\x00\x00\x04\x40\x00\x00', 
    33 '\x04\x40\x01\x00\x09\x20\x0f\x00\x0e\x00\x06\x00\x09\x20\x0f\x00', 
    34 '\x01\x00\x01\x00\x09\x20\x0f\x00\x0e\x00\x03\x00\x09\x20\x0f\x00', 
    35 '\x01\x20\x00\x00\x00\x00\x08\x00\x02\x00\x07\x00\x08\x20\x1a\x00', 
    36 '\x01\x00\x00\x00\x04\x40\x00\x00\x04\x40\x82\x00\x08\x20\x1a\x00', 
    37 '\x01\x00\x00\x00\x04\x40\x01\x00\x04\x40\x00\x00\x08\x20\x1d\x00', 
    38 '\x01\x00\x01\x00\x01\x40\x00\x00\x09\x20\x0f\x00\x0e\x00\x06\x00', 
    39 '\x09\x20\x0f\x00\x01\x00\x01\x00\x09\x20\x0f\x00\x0e\x00\x03\x00', 
    40 '\x09\x20\x0f\x00\x01\x20\x00\x00\x00\x00\x08\x00\x02\x00\x0d\x00', 
    41 '\x08\x20\x1a\x00\x01\x00\x00\x00\x04\x40\x00\x00\x04\x40\x82\x00', 
    42 '\x08\x20\x1d\x00\x01\x00\x01\x00\x01\x40\x00\x00\x04\x40\x00\x00', 
    43 '\x04\x40\x61\x00\x09\x20\x0f\x00\x0e\x00\x06\x00\x09\x20\x0f\x00', 
    44 '\x01\x00\x01\x00\x09\x20\x0f\x00\x0e\x00\x03\x00\x0f\x20\x11\x00', 
    45 '\x0f\x20\x00\x00\x07\x00\x00\x00\x74\x2e\x68\x73\x70\x00\x00\x5f', 
    46 '\x5f\x61\x62\x63\x00\x5f\x61\x61\x00\x61\x00\x62\x00\x7e\x00\x00', 
    47 '\x00\xfe\x00\x00\x00\x00\x00\x00\x06\x08\x08\x0c\x04\x04\x04\x00', 
    48 '\x02\x00\x06\x08\x08\x00\x06\x04\x04\x04\x00\x02\x00\x06\x08\x00', 
    49 '\x0a\x04\x04\x04\x06\xfd\x11\x00\x00\x00\x00\xfd\x13\x00\x00\x01', 
    50 '\x00\xff\xff' 
     23'\x48\x53\x50\x33\x01\x03\x00\x00\x01\x00\x00\x00\xb0\x00\x00\x00', 
     24'\x60\x00\x00\x00\x30\x00\x00\x00\x90\x00\x00\x00\x09\x00\x00\x00', 
     25'\x99\x00\x00\x00\x04\x00\x00\x00\x9d\x00\x00\x00\x13\x00\x00\x00', 
     26'\xb0\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00', 
     27'\xb0\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00', 
     28'\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
     29'\x01\x20\x00\x00\x00\x00\x08\x00\x02\x00\x06\x00\x08\x20\x1f\x00', 
     30'\x01\x00\x00\x00\x04\x40\x64\x00\x08\x20\x1a\x00\x01\x00\x00\x00', 
     31'\x04\x40\x40\x00\x0f\x20\x11\x00\x0f\x20\x00\x00\x07\x00\x00\x00', 
     32'\x74\x2e\x68\x73\x70\x00\x00\x61\x00\x12\x00\x00\x00\xfe\x00\x00', 
     33'\x00\x00\x00\x00\x06\x06\x06\x06\xfd\x07\x00\x00\x00\x00\xff\xff' 
    5134        ].join(''); 
    5235 
  • lang/javascript/hsp-on-js/trunk/src/str-array.js

    r20799 r20926  
    5555        getByteSize: function getByteSize(offset) { 
    5656                return this.values[offset].getByteSize(); 
     57        }, 
     58        expandByteSize: function expandByteSize(offset, size) { 
     59                this.values[offset].expandByteSize(size); 
    5760        } 
    5861}); 
  • lang/javascript/hsp-on-js/trunk/src/str-buffer.js

    r20845 r20926  
    5252        getByteSize: function getByteSize() { 
    5353                return this._str.length; 
     54        }, 
     55        expandByteSize: function expandByteSize(size) { 
     56                if(this._str.length >= size) return; 
     57                this._str += Utils.strTimes("\0", size - this._str.length); 
    5458        } 
    5559}; 
  • lang/javascript/hsp-on-js/trunk/src/t.hsp

    r20912 r20926  
    11a = "" 
    2 poke a, 0, 0x82 
    3 poke a, 1, 0xA0 
    4 getstr b, a, 0, 0, 1 
    5 mes strsize 
    6 mes b 
    7 mes stat 
    8  
    9 mes 
    10  
    11 a = "__abc" 
    12 poke a, 0, 0x82 
    13 poke a, 1, 0x00 
    14  
    15 getstr b, a 
    16 mes strsize 
    17 mes b 
    18 mes stat 
    19  
    20 mes 
    21  
    22 a = "_aa" 
    23 poke a, 0, 0x82 
    24  
    25 getstr b, a, 0, 'a' 
    26 mes strsize 
    27 mes b 
    28 mes stat 
     2memexpand a, 100 
     3poke a, 64 
  • lang/javascript/hsp-on-js/trunk/src/variable-agent.js

    r20657 r20926  
    100100                if(offset == null) throw new HSPError(ErrorCode.ARRAY_OVERFLOW); 
    101101                return this.variable.getByteSize(offset); 
     102        }, 
     103        expandByteSize: function expandByteSize(size) { 
     104                var offset = this.variable.value.getOffset(this.indices); 
     105                if(offset == null) throw new HSPError(ErrorCode.ARRAY_OVERFLOW); 
     106                return this.variable.expandByteSize(offset, size); 
    102107        } 
    103108}; 
  • lang/javascript/hsp-on-js/trunk/src/variable.js

    r20657 r20926  
    8989        getByteSize: function getByteSize(offset) { 
    9090                return this.value.getByteSize(offset); 
     91        }, 
     92        expandByteSize: function expandByteSize(offset, size) { 
     93                return this.value.expandByteSize(offset, size); 
    9194        } 
    9295};