|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.11.2009, 12:05 | #1 |
Oldschool geek
Форумчанин
Регистрация: 09.03.2009
Сообщений: 611
|
Реализация java.util.concurrent.atomic.AtomicI nteger на x86
Меня интересует, в какой x86 код транслируются методы get() и set() сабжа. И метод lazySet() тоже, если такой есть. Скорее всего, lazySet() на x86 — это обычная запись в память.
В online исходниках GCJ я нашёл вот такое: http://gcc.gnu.org/viewcvs/trunk/lib....h?view=markup а где там реализация, непонятно. Мне не очевидно, как при реализации расставлены барьеры памяти и вообще какими x86 инструкциями лучше реализовывать get() и set() (не в Java). Чтобы не рисковать, я пока реализую set() как lock xchgl, пусть даже мне не очень нужно прежнее значение, а get() — как lock xaddl, добавляя ноль. Думаю, всё это не очень оптимально, зато уж точно корректно. |
22.11.2009, 20:44 | #2 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
В исходниках Java наврятли получится найти ответ. вам нужно копать в сторону ассемблера.
Однако: Код:
Код из Sun JDK 6.13
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разрядность ОСи x86/x64 | Veiron | Win Api | 11 | 13.12.2010 17:26 |
Переписать программку с x86 под x64 | PnG | Фриланс | 6 | 02.11.2009 11:24 |
assembler x86-64 | DEADHUNT | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 21 | 01.06.2009 22:38 |
USB driver для x86 Family | Vladislav | Компьютерное железо | 0 | 29.04.2008 08:08 |