Showing the changes to java/appl/java/low.s (1 of 18352 files). Show all
Unified · Split
| @@ -0,0 +1,140 @@ | ||
| 1 | +#0 | |
| 2 | +# SetByte | |
| 3 | + addw 32(fp),36(fp),44(fp) | |
| 4 | + movb 40(fp),0(44(fp)) | |
| 5 | + ret | |
| 6 | +#3 | |
| 7 | +# SetInt | |
| 8 | + addw 32(fp),36(fp),44(fp) | |
| 9 | + movw 40(fp),0(44(fp)) | |
| 10 | + ret | |
| 11 | +#6 | |
| 12 | +# SetBig | |
| 13 | + addw 32(fp),36(fp),48(fp) | |
| 14 | + movl 40(fp),0(48(fp)) | |
| 15 | + ret | |
| 16 | +#9 | |
| 17 | +# SetReal | |
| 18 | + addw 32(fp),36(fp),48(fp) | |
| 19 | + movf 40(fp),0(48(fp)) | |
| 20 | + ret | |
| 21 | +#12 | |
| 22 | +# SetObj | |
| 23 | + addw 32(fp),36(fp),44(fp) | |
| 24 | + movp 40(fp),0(44(fp)) | |
| 25 | + ret | |
| 26 | +#15 | |
| 27 | +# GetByte | |
| 28 | + addw 32(fp),36(fp),40(fp) | |
| 29 | + movb 0(40(fp)),0(16(fp)) | |
| 30 | + ret | |
| 31 | +#18 | |
| 32 | +# GetInt | |
| 33 | + addw 32(fp),36(fp),40(fp) | |
| 34 | + movw 0(40(fp)),0(16(fp)) | |
| 35 | + ret | |
| 36 | +#21 | |
| 37 | +# GetBig | |
| 38 | + addw 32(fp),36(fp),40(fp) | |
| 39 | + movl 0(40(fp)),0(16(fp)) | |
| 40 | + ret | |
| 41 | +#24 | |
| 42 | +# GetReal | |
| 43 | + addw 32(fp),36(fp),40(fp) | |
| 44 | + movf 0(40(fp)),0(16(fp)) | |
| 45 | + ret | |
| 46 | +#27 | |
| 47 | +# GetObj | |
| 48 | + addw 32(fp),36(fp),40(fp) | |
| 49 | + movp 0(40(fp)),0(16(fp)) | |
| 50 | + ret | |
| 51 | +#30 | |
| 52 | +#CallMethod: frame size==80 map==0x00b840 | |
| 53 | +# params | |
| 54 | +# module ptr: 32(fp) ptr | |
| 55 | +# method idx: 36(fp) | |
| 56 | +# this ptr: 40(fp) ptr | |
| 57 | +# args: 44(fp) ptr | |
| 58 | +# ret-val: 48(fp) ptr | |
| 59 | +# local vars used: | |
| 60 | +# frame: 52(fp) not-marked | |
| 61 | +# frame-slot: 56(fp) | |
| 62 | +# loop index: 60(fp) | |
| 63 | +# tmp: 64(fp) -- used for array idexing & alignment ck | |
| 64 | +# pick-tmp: 68(fp) ptr | |
| 65 | +# array len: 72(fp) | |
| 66 | +# | |
| 67 | + mframe 32(fp),36(fp),52(fp) | |
| 68 | + addw 52(fp),$32,56(fp) #compute slot address for arg | |
| 69 | + beqw 0(mp),40(fp),$35 #if static then 'this' is nil | |
| 70 | + movp 40(fp),0(56(fp)) #move 'this' into frame | |
| 71 | + addw $4,56(fp) #next slot | |
| 72 | +#35 | |
| 73 | + # move args into frame | |
| 74 | + # for(idx:=0; idx <len args; idx++ ) | |
| 75 | + movw $0,60(fp) #initialize loop idx | |
| 76 | + lena 44(fp),72(fp) #length of array | |
| 77 | +#37 | |
| 78 | + blew 72(fp),60(fp),$60 #loop condition | |
| 79 | + indw 44(fp),64(fp),60(fp) #index the array | |
| 80 | + movp 0(64(fp)),68(fp) #grab the array element; its a ref pick-adt | |
| 81 | + case 0(68(fp)),4(mp) #switch off of the 'pick' id | |
| 82 | +#41 | |
| 83 | + movp 4(68(fp)),0(56(fp)) # object param | |
| 84 | + jmp $57 | |
| 85 | +#43 | |
| 86 | + movw 4(68(fp)),0(56(fp)) # word param (byte,short,char,boolean,int) | |
| 87 | + jmp $57 | |
| 88 | +#45 | |
| 89 | + andw 56(fp),$7,64(fp) # check for 8-byte alignment | |
| 90 | + beqw 64(fp),$0,$48 # branch if already aligned | |
| 91 | + addw $4,56(fp) # next slot is aligned | |
| 92 | + movl 8(68(fp)),0(56(fp)) # big param (long) | |
| 93 | + addw $8,56(fp) # next param slot | |
| 94 | + jmp $58 | |
| 95 | +#51 | |
| 96 | + andw 56(fp),$7,64(fp) # check for 8-byte alignment | |
| 97 | + beqw 64(fp),$0,$54 # branch if already aligned | |
| 98 | + addw $4,56(fp) # next slot is aligned | |
| 99 | + movf 8(68(fp)),0(56(fp)) # real param (float,double) | |
| 100 | + addw $8,56(fp) # next param slot | |
| 101 | + jmp $58 | |
| 102 | +#57 | |
| 103 | + addw $4,56(fp) # next slot | |
| 104 | +#58 | |
| 105 | + addw $1,60(fp) #inc loop index | |
| 106 | + jmp $37 #end-for | |
| 107 | +#60 | |
| 108 | + # setup return value if one exists | |
| 109 | + beqw 0(mp),48(fp),$65 #if nil then no functional return | |
| 110 | + case 0(48(fp)),60(mp) #switch off pick field of ret-value | |
| 111 | +#62 | |
| 112 | + lea 4(48(fp)),16(52(fp)) #4-byte aligned return addr | |
| 113 | + jmp $65 | |
| 114 | + lea 8(48(fp)),16(52(fp)) #8-byte aligned return addr | |
| 115 | +#65 | |
| 116 | + mcall 52(fp),36(fp),32(fp) | |
| 117 | + ret | |
| 118 | +# | |
| 119 | +# change the following with care | |
| 120 | +# | |
| 121 | + desc $0,92,"80" | |
| 122 | + desc $1,48,"00a0" | |
| 123 | + desc $2,40,"0080" | |
| 124 | + desc $3,48,"0080" | |
| 125 | + desc $4,80,"00b840" | |
| 126 | + var @mp,92 | |
| 127 | + word @mp+4,4,0,1,41,1,6,43,6,7,45,7,9,51,66 | |
| 128 | + word @mp+60,2,0,6,62,6,9,64,66 | |
| 129 | + module Low | |
| 130 | + link 3,0, 0x349a7796,"SetByte" | |
| 131 | + link 3,3, 0x2de68727,"SetInt" | |
| 132 | + link 3,6, 0xd7e9f417,"SetBig" | |
| 133 | + link 3,9 ,0xa51f3c84,"SetReal" | |
| 134 | + link 1,12,0x2ada273,"SetObj" | |
| 135 | + link 2,15,0x65a049aa,"GetByte" | |
| 136 | + link 2,18,0x7060ebba,"GetInt" | |
| 137 | + link 2,21,0x9f04ed0,"GetBig" | |
| 138 | + link 2,24,0x553990fb,"GetReal" | |
| 139 | + link 2,27,0x30af57fd,"GetObj" | |
| 140 | + link 4,30,0x2943aeae,"CallMethod" | |