https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat Пример: использование локалей
В этом примере показаны некоторые из вариации в локализованных числовых форматах. Чтобы получить формат языка, используемого в пользовательском интерфейсе вашего приложения, обязательно укажите этот язык (и, возможно, некоторые запасные языки), используя аргумент locales:
var number = 123456.789;
// Немецкий язык использует запятую в качестве десятичного разделителя и точку для тысяч console.log (new Intl.NumberFormat ('de-DE'). Format (number)); // → 123.456,789
// В большинстве говорящих на арабском языке арабских языков используются настоящие арабские цифры console.log (new Intl.NumberFormat ('ar-EG'). Format (number)); // → ١٢٣٤٥٦ ٫ ٧٨٩
// Индия использует разделители тысяч / лакх / крор console.log (новый Intl.NumberFormat ('en-IN'). Format (number));
Предполагая формат файла ELF, ассемблер сгенерирует неопределенную ссылку на символ в объектном файле. Это будет выглядеть так:
Symbol table '.symtab' contains 11 entries: Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FILE LOCAL DEFAULT ABS test.c 2: 00000000 0 SECTION LOCAL DEFAULT 1 3: 00000000 0 SECTION LOCAL DEFAULT 3 4: 00000000 0 SECTION LOCAL DEFAULT 4 5: 00000000 0 SECTION LOCAL DEFAULT 5 6: 00000000 0 SECTION LOCAL DEFAULT 6 7: 00000000 0 SECTION LOCAL DEFAULT 7 8: 00000000 52 FUNC GLOBAL DEFAULT 1 main 9: 00000000 0 NOTYPE GLOBAL DEFAULT UND printf 10: 00000000 0 NOTYPE GLOBAL DEFAULT UND exit
Он также создаст запись о перемещении, чтобы указать на часть изображения кода, которая должна быть обновлена компоновщиком с правильным адресом. Это будет выглядеть так:
tool2 0>readelf -r test.o Relocation section '.rel.text' at offset 0x358 contains 3 entries: Offset Info Type Sym.Value Sym. Name 0000001f 00000501 R_386_32 00000000 .rodata 00000024 00000902 R_386_PC32 00000000 printf 00000030 00000a02 R_386_PC32 00000000 exit
Затем работа компоновщика состоит в том, чтобы пройти по таблице перемещений, исправляя изображение кода с окончательными адресами символов.
Есть отличная книга, но я не могу найти подробностей прямо сейчас (и это не издается). Однако, похоже, это может быть полезно: http://www.linuxjournal.com/article/6463
Дэйв.
Отличную книгу о процессе связывания см. В Linkers & Loaders Джона Левина. Вы можете получить главы рукописи в формате HTML здесь .
Еще один хороший ресурс по линкерам - это серия статей: http://www.google.fr/search? q = site% 3Awww.airs.com% 2Fblog% 2Farchives +% 22linkers + часть% 22 .
Документ, который может вам помочь, - это Как писать общие библиотеки Ульриха Дреппера. Ульритч, сопровождающий Linux glibc, является авторитетом в области ELF.
Несмотря на то, что эта статья о том, как писать разделяемые библиотеки и как экспортировать или не экспортировать символы, объясняется, как эти символы динамически разрешаются внутри exe-файла с форматом ELF.
Думаю, это ответит на ваш вопрос.