Size: a a a

Ассемблер

2020 September 16

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
iv an
C:\Program Files\NASM>nasm -f bin myfile.asm -o mmyfile.com
myfile.asm: fatal: unable to open output file `mmyfile.com'
ты для доса собираешь?
источник

C

Cplus in Ассемблер
Всем привет. Не подскажете что делает инструкция test?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Cplus
Всем привет. Не подскажете что делает инструкция test?
это то же самое что и and, вот только операнды никак не меня.тся, а только ставятся флаги. удобно для тестирования битов и проверки значения на ноль
источник

C

Cplus in Ассемблер
Спасибо
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
00100111
test
00000010
первый бит остается (он не ноль), дальше можно использовать jnz/jz

для проверки на ноль
00100111
test
00100111
итоговое мнимое число остается таким же, флан еуля не выставляется

00000000
test
00000000
флаг нуля выставляется
test ax,ax
источник

C

Cplus in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮bot
00100111
test
00000010
первый бит остается (он не ноль), дальше можно использовать jnz/jz

для проверки на ноль
00100111
test
00100111
итоговое мнимое число остается таким же, флан еуля не выставляется

00000000
test
00000000
флаг нуля выставляется
test ax,ax
Спасибооо)
источник

ST

Saenro T in Ассемблер
Оказывается всё-таки можно закидывать числа в регистры FPU (ST0-ST7) не только из памяти, но и сразу с регистра RAX и т.п., правда от того что в 80-ти битный регистр прилетит 64 бита — толку мало, к тому же старшие 16 бит регистра ST, при этом, установятся в 1.
С другой стороны, если для каких-то целей достаточно младших 64 бит из ST, то их напрямую можно положить в тот же RAX
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Оказывается всё-таки можно закидывать числа в регистры FPU (ST0-ST7) не только из памяти, но и сразу с регистра RAX и т.п., правда от того что в 80-ти битный регистр прилетит 64 бита — толку мало, к тому же старшие 16 бит регистра ST, при этом, установятся в 1.
С другой стороны, если для каких-то целей достаточно младших 64 бит из ST, то их напрямую можно положить в тот же RAX
не представляю ситуацию когда 80 битное число испорльзуют по частям
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
только экспоненту получается, без знака и порядка
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
в любом случае при использовании 64 младших битов и 15 битах, которые установлены в 1(знак не считаем), то в регистре ST будет +-NaN. а если мы в ST закидываем RAX=0, то будет получаться +-бесконечность
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
и далее, чтоб выгрузить из fpu значение видимо придется использовать fst, которая преобразовывает и выгружает 80 бит в 64 (а в ST то у нас лежит 80битное nan или inf). в итоге эти же значения, но только в 64битном формате мы получим и в регистре rax
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
если мои рассуждения неправильные - поправь
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Оказывается всё-таки можно закидывать числа в регистры FPU (ST0-ST7) не только из памяти, но и сразу с регистра RAX и т.п., правда от того что в 80-ти битный регистр прилетит 64 бита — толку мало, к тому же старшие 16 бит регистра ST, при этом, установятся в 1.
С другой стороны, если для каких-то целей достаточно младших 64 бит из ST, то их напрямую можно положить в тот же RAX
наверное, то про что ты говоришь паралельно связано с mmx, которые делит память регистров с регистрами fpu
источник

ST

Saenro T in Ассемблер
Я про то, что никто не говорит что так можно делать. Все говорят что только из памяти. Теперь понятно почему умалчивают)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Я про то, что никто не говорит что так можно делать. Все говорят что только из памяти. Теперь понятно почему умалчивают)
мои размышления никак с этим не связаны. там что то на архитектурном уровне отсутсвует в fpu
источник

ST

Saenro T in Ассемблер
Отсутствуют 16 бит, но не в FPU)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
Отсутствуют 16 бит, но не в FPU)
ну и что. в/из fpu можно грузить/выгружать числа 4-8-10 байтные, ну и BCD, но это не в счет
источник

ST

Saenro T in Ассемблер
В любом случае, по факту загрузится 10 байт.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Saenro T
В любом случае, по факту загрузится 10 байт.
не загрузится, а преобразуется в размер самих регистров, если конечно это не tbyte
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
так же и при выгрузке. выгружаем real4, в fpu  это (tbyte) сначало преобразуется до 32 бит (за кулисами) с потерей точности, и кидается в память
источник