java — смысл реализации абстрактных инструкций для различных платформ

Смотрите следующий код:

//               sparc RMO             ia64             x86
// ---------------------------------------------------------------------
// fence         membar #LoadStore |   mf               lock addl 0,(sp)
//                      #StoreStore |
//                      #LoadLoad |
//                      #StoreLoad
//
// release       membar #LoadStore |   st.rel [sp]=r0   movl $0,<dummy>
//                      #StoreStore
//               st %g0,[]
//
// acquire       ld [%sp],%g0          ld.acq <r>=[sp]  movl (sp),<r>
//               membar #LoadLoad |
//                      #LoadStore
//
// release_store membar #LoadStore |   st.rel           <store>
//                      #StoreStore
//               st
//
// store_fence   st                    st               lock xchg
//               fence                 mf
//
// load_acquire  ld                    ld.acq           <load>
//               membar #LoadLoad |
//                      #LoadStore

Приведенный выше код является реализацией абстрактной инструкции acqu / release / fence на другой платформе, я просто хочу узнать реализацию x86.

Можете ли вы объяснить инструкции ниже для меня?

How 'movl $0,<dummy>' represent release?
How 'movl (sp),<r>' represent acquire?
How '<store>' represent release_store?
How 'lock xchg' represent store_fence?
How '<load>' represent load_acquire?

Код из jdk8 / openjdk / hotspot / src / share / vm / runtime / OrderAddress.hpp, «Модель порядка доступа к памяти»

Если вы заняты, вы можете просто сказать мне, где я могу найти информацию о наборе команд для различных архитектур ЦП.

0

Решение

У x86 есть «модель сильной памяти», что означает, что каждая машинная инструкция неявно сопровождается семантикой получения и выпуска. Вы можете дополнительно прочитать этот, а также ответы на этот вопрос.

0

Другие решения


По вопросам рекламы [email protected]