Хорошая статья, мне бы эта информация очень пригодилась когда я разбирался с этой темой для своего компилятора, разработка которого кстати ведется полностью на видео (на англ.).
Поэтому программы компилируются в несколько проходов. Например секция .rdata идет после секции .text, при этом мы не можем узнать виртуальный адрес переменной в .rdata, ведь если секция .text разрастется больше чем на 0x1000 (SectionAlignment) байт, она займет адреса 0x2000 диапазона. И соответственно секция .rdata будет находиться уже не в адресе 0x2000, а в адресе 0x3000. И нам будет необходимо вернуться и пересчитать адреса всех переменных в секции .text которая идет перед .rdata.
Писать секции в файл не обязательно в этом порядке. Я в итоге сделал так что .data пишется первой и тогда всё расчитывается в один проход, просто RIP-относительный оффсет получится отрицательным.
Я имею в виду что после остановки кинетик скролла может получиться что-то вроде -webkit-transform:translate3d(0,42.4564574,0), а не -webkit-transform:translate3d(0,42,0) как хотелось бы чтобы все содержимое попадало в пиксели экрана.
У iScroll 4 есть проблема с тем что после скролла transform может оказаться неинтегральным что приводит к размазанному изображению, особенно заметно на шрифтах. У яндекса такого не заметил, но кривые ускорения лучше у iScroll 4 на мой вкус. Лучший скролл из тех что я видел у Sencha Touch правда он слабо юзабильный на старых андроидах и айфонах.
Давно хотел узнать как соотносится PVS-Studio и статический анализатор на основе LLVM который разрабатывается Apple для XCode. Судя по тому что они проверяют clang этим анализатором при разработке получается что PVS-Studio все же лучше.
Писать секции в файл не обязательно в этом порядке. Я в итоге сделал так что .data пишется первой и тогда всё расчитывается в один проход, просто RIP-относительный оффсет получится отрицательным.