Size: a a a

WebAssembly — русскоговорящее сообщество

2020 November 14

Б

Борис in WebAssembly — русскоговорящее сообщество
Доброго времени суток!

есть вот такой код на asc:
export class Foo {
   title: string

   constructor(str: string) { this.title = str; }
}


меня интересует метод доступ извне к аттрибуту title.
в сбилженном wasm'е определение геттера выглядит вот так:
 (func $assembly/index/Foo#get:title (param $0 i32) (result i32)
 local.get $0
 i32.load
)

мне категорически не понятно, как имея только один индекс(result i32) я могу получить всю строку целиком.
как мне понять, какая у этой строки длина?
источник
2020 November 15

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
Борис
Доброго времени суток!

есть вот такой код на asc:
export class Foo {
   title: string

   constructor(str: string) { this.title = str; }
}


меня интересует метод доступ извне к аттрибуту title.
в сбилженном wasm'е определение геттера выглядит вот так:
 (func $assembly/index/Foo#get:title (param $0 i32) (result i32)
 local.get $0
 i32.load
)

мне категорически не понятно, как имея только один индекс(result i32) я могу получить всю строку целиком.
как мне понять, какая у этой строки длина?
ага
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
тут есть хитрость - тебе нужно задействовать хип
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
тебе нужно возвратить указатель
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
у указателя есть 2 свойства - адрес и длина
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
так вот вам нужно вернуть указатель на указатель на строку
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
именно это одна из причин - почему иногда полезно иметь возможность возвращать несколько значений
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
экономия на указателях
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
а так, тут получается указатель на указатель
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
ещё почитайте про Memory
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
WebAssembly Memory
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
и операции с ней
источник

Б

Борис in WebAssembly — русскоговорящее сообщество
спасибо, про то, как пямять устроена я читал. и собсно ожидал, что возвращаемых параметров будет 2 )
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
но лучше вообще не возвращать строку
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
лучше просто записать по переданному указателю
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
но это уже как вам удобнее
источник

Б

Борис in WebAssembly — русскоговорящее сообщество
спасибо!
источник

Б

Борис in WebAssembly — русскоговорящее сообщество
Alexey F.
лучше просто записать по переданному указателю
есть какой нибудь пример?
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
ну, указатель - это адрес в памяти
источник

AF

Alexey F. in WebAssembly — русскоговорящее сообщество
ссылка
источник