Changeset 20195

Show
Ignore:
Timestamp:
09/29/08 16:16:59 (5 years ago)
Author:
fujidig
Message:

memset, memcpy を実装

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

Legend:

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

    r20182 r20195  
    237237                v.setbyte(offset + 1, val >> 8); 
    238238        }, 
    239         0x1c: function wpoke(v, offset, val) { 
     239        0x1c: function lpoke(v, offset, val) { 
    240240                this.scanArgs(arguments, 'vNN'); 
    241241                offset = offset ? offset.toIntValue()._value : 0; 
     
    245245                v.setbyte(offset + 2, val >> 16); 
    246246                v.setbyte(offset + 3, val >> 24); 
     247        }, 
     248        0x20: function memcpy(destVar, srcVar, length, destOffset, srcOffset) { 
     249                this.scanArgs(arguments, 'vvNNN'); 
     250                length = length ? length.toIntValue()._value : 0; 
     251                destOffset = destOffset ? destOffset.toIntValue()._value : 0; 
     252                srcOffset = srcOffset ? srcOffset.toIntValue()._value : 0; 
     253                destVar.setbytes(destOffset, srcVar.getbytes(srcOffset, length)); 
     254        }, 
     255        0x21: function memset(v, val, length, offset) { 
     256                this.scanArgs(arguments, 'vNNN'); 
     257                val = val ? val.toIntValue()._value : 0; 
     258                length = length ? length.toIntValue()._value : 0; 
     259                offset = offset ? offset.toIntValue()._value : 0; 
     260                v.setbytes(offset, Utils.strTimes(String.fromCharCode(val), length)); 
    247261        }, 
    248262        0x27: function randomize(seed) { 
  • lang/javascript/hsp-on-js/trunk/src/hsp-array.js

    r20182 r20195  
    9393                throw new HSPError(ErrorCode.UNSUPPORTED_FUNCTION, 
    9494                                   VarTypeNames[this.getType()]+" 型はメモリ書き込みに対応していません");  
     95        }, 
     96        getbytes: function getbytes(indices, bytesOffset, length) { 
     97                var result = ""; 
     98                for(var i = 0; i < length; i ++) { 
     99                        result += String.fromCharCode(this.getbyte(indices, bytesOffset + i)); 
     100                } 
     101                return result; 
     102        }, 
     103        setbytes: function setbytes(indices, bytesOffset, buf) { 
     104                for(var i = 0; i < buf.length; i ++) { 
     105                        this.setbyte(indices, bytesOffset + i, buf.charCodeAt(i)); 
     106                } 
    95107        } 
    96108}; 
  • lang/javascript/hsp-on-js/trunk/src/run-in-shell.js

    r20182 r20195  
    2121function main(){ 
    2222        var data = [ 
    23 '\x48\x53\x50\x33\x01\x03\x00\x00\x01\x00\x00\x00\x6a\x01\x00\x00', 
    24 '\x60\x00\x00\x00\xe2\x00\x00\x00\x42\x01\x00\x00\x08\x00\x00\x00', 
    25 '\x4a\x01\x00\x00\x04\x00\x00\x00\x4e\x01\x00\x00\x1c\x00\x00\x00', 
    26 '\x6a\x01\x00\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00', 
    27 '\x6a\x01\x00\x00\x00\x00\x00\x00\x6a\x01\x00\x00\x00\x00\x00\x00', 
    28 '\x6a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
    29 '\x08\x20\x1b\x00\x01\x00\x00\x00\x04\x40\x00\x00\x04\x40\x22\x11', 
    30 '\x09\x20\x0f\x00\x0d\x00\x00\x01\x00\x00\x28\x00\x01\x00\x00\x00', 
    31 '\x04\x40\x10\x00\x00\x00\x29\x00\x09\x20\x0f\x00\x0d\x00\x00\x01', 
    32 '\x00\x00\x28\x00\x0d\x00\x09\x00\x00\x00\x28\x00\x01\x00\x00\x00', 
    33 '\x04\x40\x00\x00\x00\x00\x29\x00\x04\x40\x10\x00\x00\x00\x29\x00', 
    34 '\x09\x20\x0f\x00\x0d\x00\x00\x01\x00\x00\x28\x00\x0d\x00\x09\x00', 
    35 '\x00\x00\x28\x00\x01\x00\x00\x00\x04\x40\x01\x00\x00\x00\x29\x00', 
    36 '\x04\x40\x10\x00\x00\x00\x29\x00\x01\x20\x00\x00\x00\x00\x08\x00', 
    37 '\x04\x00\x00\x00\x04\x40\x00\x00\x08\x20\x1c\x00\x01\x00\x00\x00', 
    38 '\x04\x40\x01\x00\x04\xc0\x11\x22\x33\x44\x09\x20\x0f\x00\x0d\x00', 
    39 '\x00\x01\x00\x00\x28\x00\x01\x00\x00\x00\x04\x40\x10\x00\x00\x00', 
    40 '\x29\x00\x09\x20\x0f\x00\x0d\x00\x00\x01\x00\x00\x28\x00\x01\x00', 
    41 '\x00\x00\x00\x00\x28\x00\x04\x00\x01\x00\x00\x00\x29\x00\x04\x40', 
    42 '\x10\x00\x00\x00\x29\x00\x0f\x20\x11\x00\x0f\x20\x00\x00\x07\x00', 
    43 '\x00\x00\x74\x2e\x68\x73\x70\x00\x61\x00\x6b\x00\x00\x00\xfe\x00', 
    44 '\x00\x00\x00\x00\x00\x00\x00\x08\x0c\x14\x14\x00\x08\x09\x0c\x12', 
    45 '\x00\x06\xfd\x06\x00\x00\x00\x00\xff\xff' 
     23'\x48\x53\x50\x33\x01\x03\x00\x00\x01\x00\x00\x00\xe9\x00\x00\x00', 
     24'\x60\x00\x00\x00\x66\x00\x00\x00\xc6\x00\x00\x00\x08\x00\x00\x00', 
     25'\xce\x00\x00\x00\x04\x00\x00\x00\xd2\x00\x00\x00\x17\x00\x00\x00', 
     26'\xe9\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00', 
     27'\xe9\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x00\x00\x00\x00\x00\x00', 
     28'\xe9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
     29'\x08\x20\x21\x00\x01\x00\x00\x00\x04\x40\xff\x00\x04\x40\x04\x00', 
     30'\x09\x20\x0f\x00\x01\x00\x00\x00\x01\x20\x00\x00\x00\x00\x08\x00', 
     31'\x04\x80\x11\x22\x33\x44\x04\x40\x55\x00\x08\x20\x20\x00\x01\x00', 
     32'\x00\x00\x01\x40\x00\x00\x04\x40\x04\x00\x04\x40\x00\x00\x04\x40', 
     33'\x01\x00\x09\x20\x0f\x00\x0d\x00\x00\x01\x00\x00\x28\x00\x01\x00', 
     34'\x00\x00\x04\x40\x10\x00\x00\x00\x29\x00\x0f\x20\x11\x00\x0f\x20', 
     35'\x00\x00\x07\x00\x00\x00\x74\x2e\x68\x73\x70\x00\x61\x00\x2d\x00', 
     36'\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x08\x04\x00\x09\x0c\x0c\x00', 
     37'\x06\xfd\x06\x00\x00\x00\x00\xff\xff' 
    4638        ].join(''); 
    4739 
  • lang/javascript/hsp-on-js/trunk/src/t.hsp

    r20182 r20195  
    1 ;#define hex(%1) strf("%%x", %1) 
    2 #define hex(%1) str(%1, 16) 
     1memset a, 0xff, 4 
     2mes a 
    33 
    4 wpoke a, 0, 0x1122 
    5 mes hex(a) 
    6 mes hex(peek(a,0)) 
    7 mes hex(peek(a,1)) 
     4a = 0x44332211, 0x55 
     5memcpy a, a, 4, 0, 1 
     6mes str(a, 16) 
    87 
    9 a = 0, 0 
    10 lpoke a, 1, 0x44332211 
    11 mes hex(a) 
    12 mes hex(a.1) 
    13  
  • lang/javascript/hsp-on-js/trunk/src/utils.js

    r20137 r20195  
    1515                ary.length -= n; 
    1616                return result; 
     17        }, 
     18        strTimes: function strTimes(str, n) { 
     19                var result = '' 
     20                for(var i = 0; i < n; i ++) { 
     21                        result += str; 
     22                } 
     23                return result; 
    1724        } 
    1825}; 
  • lang/javascript/hsp-on-js/trunk/src/variable-agent.js

    r20182 r20195  
    7979        setbyte: function setbyte(bytesOffset, val) { 
    8080                return this.variable.setbyte(this.indices, bytesOffset, val); 
     81        }, 
     82        getbytes: function getbytes(bytesOffset, length) { 
     83                return this.variable.getbytes(this.indices, bytesOffset, length); 
     84        }, 
     85        setbytes: function setbytes(bytesOffset, buf) { 
     86                return this.variable.setbytes(this.indices, bytesOffset, buf); 
    8187        } 
    8288}; 
  • lang/javascript/hsp-on-js/trunk/src/variable.js

    r20182 r20195  
    9393        setbyte: function setbyte(indices, bytesOffset, val) { 
    9494                return this.value.setbyte(indices, bytesOffset, val); 
     95        }, 
     96        getbytes: function getbytes(indices, bytesOffset, length) { 
     97                return this.value.getbytes(indices, bytesOffset, length); 
     98        }, 
     99        setbytes: function setbytes(indices, bytesOffset, buf) { 
     100                return this.value.setbytes(indices, bytesOffset, buf); 
    95101        } 
    96102};