Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
В Spectrum была пара команд PEEK/POKE. PEEK созвучен PICK и по смыслу близок. Почему бы не обозвать такое слово POKE? UPD. Пардон, увидел, что KPG такой вариант уже предлагал...
В Spectrum была пара команд PEEK/POKE. PEEK созвучен PICK и по смыслу близок. Почему бы не обозвать такое слово POKE?
UPD. Пардон, увидел, что [b]KPG[/b] такой вариант уже предлагал... :D
|
|
|
|
Добавлено: Ср июл 08, 2020 00:41 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Функционально - да, красиво получается.
Название - лучше DROPN всё-же. Первая N похожа на отрицание - типа мой мозг читает как NOT_DROP или NON_DROP или NEGATIVE_DROP.
Но вот теперь сижу, чешу репу, зачем-же мне этот N*4 понадобился-то?
Функционально - да, красиво получается.
Название - лучше DROPN всё-же. Первая N похожа на отрицание - типа мой мозг читает как NOT_DROP или NON_DROP или NEGATIVE_DROP.
Но вот теперь сижу, чешу репу, зачем-же мне этот N*4 понадобился-то?
|
|
|
|
Добавлено: Чт июн 14, 2018 23:47 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Может лучше NDROP всё же? Две инструкции как никак
Может лучше NDROP всё же? Две инструкции как никак
|
|
|
|
Добавлено: Чт июн 14, 2018 22:30 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Цитата: Работает как-то не по стековой диаграмме Посмотрел - да стэковая диаграмма должна быть такой: ( .. X1 .. XN N -- .. N*4 ) Внутри кода за NIPN, всегда следует DROP. Намудрил с диаграммой.
[quote]Работает как-то не по стековой диаграмме[/quote] Посмотрел - да стэковая диаграмма должна быть такой: ( .. X1 .. XN N -- .. N*4 )
Внутри кода за NIPN, всегда следует DROP. Намудрил с диаграммой.
|
|
|
|
Добавлено: Чт июн 14, 2018 19:39 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
reijii писал(а): Ну да, должОн. Мне тогда ещё NIPN понадобился. Всего две инструкции, а действие оказывает сразу на N элементов: Код: : NIPN, ( .. X1 .. XN-1 XN N-1 -- .. XN ) 0x8D C, 0x04 C, 0x85 C, 0 , \ LEA EAX, [EAX*4] 0x8D C, 0x2C C, 0x28 C, \ LEA EBP, [EAX][EBP] ; IMMEDIATE Только что вбил код Работает как-то не по стековой диаграмме на входе 1 2 3 4 5 6 3 на выходе 1 2 3 12 Хотя должно быть (если правильно понял роль слова) 1 2 6 Тогда уж MOV EDX, EBP LEA EBP, 4 [EBP] [EAX*4] MOV EAX, [EDX]
[quote="reijii"]Ну да, должОн.
Мне тогда ещё NIPN понадобился. Всего две инструкции, а действие оказывает сразу на N элементов:
[code]: NIPN, ( .. X1 .. XN-1 XN N-1 -- .. XN ) 0x8D C, 0x04 C, 0x85 C, 0 , \ LEA EAX, [EAX*4] 0x8D C, 0x2C C, 0x28 C, \ LEA EBP, [EAX][EBP] ; IMMEDIATE[/code][/quote]
Только что вбил код Работает как-то не по стековой диаграмме на входе 1 2 3 4 5 6 3 на выходе 1 2 3 12
Хотя должно быть (если правильно понял роль слова) 1 2 6
Тогда уж
MOV EDX, EBP LEA EBP, 4 [EBP] [EAX*4] MOV EAX, [EDX]
|
|
|
|
Добавлено: Чт июн 14, 2018 15:35 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Цитата: А зачем в вашем варианте SWAP Это не имеет смысла ж Да, действительно. Возможно там ещё что-то было, а может с оптимизатором воевал. Не помню детали.
[quote]А зачем в вашем варианте SWAP Это не имеет смысла ж[/quote]
Да, действительно. Возможно там ещё что-то было, а может с оптимизатором воевал. Не помню детали.
|
|
|
|
Добавлено: Чт июн 14, 2018 15:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Кода под рукой нету как-то так
Нмного подумал и поправил LEA EBP, 4 [EAX*4] [EBP] MOV EAX, -4 [EBP]
А зачем в вашем варианте SWAP Это не имеет смысла ж
Кода под рукой нету как-то так
Нмного подумал и поправил LEA EBP, 4 [EAX*4] [EBP] MOV EAX, -4 [EBP]
А зачем в вашем варианте SWAP Это не имеет смысла ж
|
|
|
|
Добавлено: Чт июн 14, 2018 11:57 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Цитата: В смысле толстый? Код: : DROPN ( x1 .. x[i] n -- x1 .. x[i-n] ) 1+ CELLS SP@ SWAP + SP! ;
SEE DROPN
57317F 8D048504000000 LEA EAX , 4 [EAX*4] 573186 8945FC MOV FC [EBP] , EAX 573189 8D6DFC LEA EBP , FC [EBP] 57318C 8BC5 MOV EAX , EBP 57318E 8B5500 MOV EDX , 0 [EBP] 573191 8BCA MOV ECX , EDX 573193 8D0408 LEA EAX , [EAX] [ECX] 573196 8D6D04 LEA EBP , 4 [EBP] 573199 E83EFDFDFF CALL 552EDC ( SP! ) 57319E C3 RET NEAR END-CODE Ok Цитата: У меня на асме 3 инструкции заняло всего Можно посмотреть? Цитата: если откат понимается ближе к бектрекингу Да. Цитата: то лучше уж вначале кода всунуть в стек возвратов что-то вроде Всовывается глубина стэка данных, адрес входного потока (>IN @) и собственно адрес возврата. Почему не адрес стэка данных - не помню, надо было именно так.
[quote]В смысле толстый?[/quote] [code]: DROPN ( x1 .. x[i] n -- x1 .. x[i-n] ) 1+ CELLS SP@ SWAP + SP! ;
SEE DROPN
57317F 8D048504000000 LEA EAX , 4 [EAX*4] 573186 8945FC MOV FC [EBP] , EAX 573189 8D6DFC LEA EBP , FC [EBP] 57318C 8BC5 MOV EAX , EBP 57318E 8B5500 MOV EDX , 0 [EBP] 573191 8BCA MOV ECX , EDX 573193 8D0408 LEA EAX , [EAX] [ECX] 573196 8D6D04 LEA EBP , 4 [EBP] 573199 E83EFDFDFF CALL 552EDC ( SP! ) 57319E C3 RET NEAR END-CODE Ok[/code] [quote]У меня на асме 3 инструкции заняло всего[/quote] Можно посмотреть?
[quote]если откат понимается ближе к бектрекингу[/quote] Да.
[quote]то лучше уж вначале кода всунуть в стек возвратов что-то вроде[/quote] Всовывается глубина стэка данных, адрес входного потока (>IN @) и собственно адрес возврата. Почему не адрес стэка данных - не помню, надо было именно так.
|
|
|
|
Добавлено: Чт июн 14, 2018 11:34 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
В смысле толстый? У меня на асме 3 инструкции заняло всего
P.S. если откат понимается ближе к бектрекингу, то лучше уж вначале кода всунуть в стек возвратов что-то вроде : SP-BACK R> SP! ;
: TEST SP@ >R ['] SP-BACK >R .... ;
В смысле толстый? У меня на асме 3 инструкции заняло всего
P.S. если откат понимается ближе к бектрекингу, то лучше уж вначале кода всунуть в стек возвратов что-то вроде : SP-BACK R> SP! ;
: TEST SP@ >R ['] SP-BACK >R .... ;
|
|
|
|
Добавлено: Чт июн 14, 2018 10:16 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Для удаления больше чем 1..2 элементов со стека. Для реализации BNF с чисткой стэка при откате, блэкджеком и женщинами с низким уровнем социальной ответственности.
Обычный DROPN уж больно толстый был. Написал свой аналог.
Для удаления больше чем 1..2 элементов со стека. Для реализации BNF с чисткой стэка при откате[s], блэкджеком и женщинами с низким уровнем социальной ответственности[/s].
Обычный DROPN уж больно толстый был. Написал свой аналог.
|
|
|
|
Добавлено: Чт июн 14, 2018 09:56 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
А где NIPN понадобился-то? Лично у меня далее 2-х NIP-ов никогда не заходило
А где NIPN понадобился-то? Лично у меня далее 2-х NIP-ов никогда не заходило
|
|
|
|
Добавлено: Чт июн 14, 2018 08:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Ну да, должОн. Мне тогда ещё NIPN понадобился. Всего две инструкции, а действие оказывает сразу на N элементов: Код: : NIPN, ( .. X1 .. XN-1 XN N-1 -- .. XN ) 0x8D C, 0x04 C, 0x85 C, 0 , \ LEA EAX, [EAX*4] 0x8D C, 0x2C C, 0x28 C, \ LEA EBP, [EAX][EBP] ; IMMEDIATE
Ну да, должОн.
Мне тогда ещё NIPN понадобился. Всего две инструкции, а действие оказывает сразу на N элементов:
[code]: NIPN, ( .. X1 .. XN-1 XN N-1 -- .. XN ) 0x8D C, 0x04 C, 0x85 C, 0 , \ LEA EAX, [EAX*4] 0x8D C, 0x2C C, 0x28 C, \ LEA EBP, [EAX][EBP] ; IMMEDIATE[/code]
|
|
|
|
Добавлено: Чт июн 14, 2018 00:03 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Подумалось, что раз есть PICK, то должен быть и PLACE.
Подумалось, что раз есть PICK, то должен быть и PLACE.
|
|
|
|
Добавлено: Ср июн 13, 2018 21:38 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Я называл её TOSS Код: : TOSS, ( XM .. XN .. X0 X N -- XM .. X .. X0 ) \ PUT X TO N-TH PLACE IN STACK 0x8B C, 0x4D C, 0x00 C, \ MOV ECX, [EBP] 0xFF C, 0xC0 C, \ INC ECX 0x89 C, 0x4C C, 0x85 C, 0x00 C, \ MOV [EAX*4+EBP], ECX 0x8B C, 0x45 C, 0x04 C, \ MOV EAX, [EBP+4] 0x8D C, 0x6D C, 0x08 C, \ LEA EBP, [EBP+8] ; IMMEDIATE
Я называл её TOSS [code]: TOSS, ( XM .. XN .. X0 X N -- XM .. X .. X0 ) \ PUT X TO N-TH PLACE IN STACK 0x8B C, 0x4D C, 0x00 C, \ MOV ECX, [EBP] 0xFF C, 0xC0 C, \ INC ECX 0x89 C, 0x4C C, 0x85 C, 0x00 C, \ MOV [EAX*4+EBP], ECX 0x8B C, 0x45 C, 0x04 C, \ MOV EAX, [EBP+4] 0x8D C, 0x6D C, 0x08 C, \ LEA EBP, [EBP+8] ; IMMEDIATE[/code]
|
|
|
|
Добавлено: Ср июн 13, 2018 16:12 |
|
|
|
|
|
Заголовок сообщения: |
Re: PICK наоборот |
|
|
Кажется, вопрос стоял только об названии...
Кажется, вопрос стоял только об названии...
|
|
|
|
Добавлено: Пт июн 08, 2018 00:22 |
|
|
|
|