PDA

Просмотр полной версии : [Вопрос] Вопросы с AMX (ассемблер)



red.inc
03.11.2019, 18:41
Приветствую всех! Есть вопрос такой, замечал ранее информацию про ассемблер, но вчера-позавчера заметил тему DC по pawn.cfg и воспользовался "-a" для просмотра кода в ассемблере.
Базовые я смотрел на многих форумах по павн.



DATA 0 ; 4724
dump 0

CODE 0 ; 22f8

proc ; OnPlayerCommandText
; line c
;$lcl cmdtext 10
;$lcl playerid c
; line d


Искал в интернете, возможно плохо искал, но итог - не нашёл. Обратился к Вами.

Daniel_Cortez
03.11.2019, 19:35
... что искали-то? Сформулируйте свой вопрос.

red.inc
03.11.2019, 20:10
Код выше, DATA,$lcl, code, и 7fffffff dump понять не могу, для чего он используется.

Daniel_Cortez
05.11.2019, 10:41
Если вы только начинаете изучать Pawn, для вас эта информация точно будет лишней. Но раз просите...

"DATA" и "CODE" - предназначены для переключения ассемблера между режимами вывода в файл данных/кода скрипта. В предыдущих версиях компилятора были нужны, сейчас же они не делают ровным счётом ничего, ассемблер их игнорирует.
"proc ; OnPlayerCommandText" - с инструкции PROC начинается любая функция в Pawn (не считая state-функций, но то отдельная тема). В комментарии после инструкции (начинается с ";") для наглядности указано название функции.
"; line c" - служебный комментарий, в котором указан номер соответствующей строки из исходного кода. Номер указан в шестнадцатеричной системе, поэтому "c" означает, что это 12-я строка в исходном файле (".pwn"/".inc"). Тоже нужен чисто для чтения человеком, ассемблер его игнорирует.
";$lcl cmdtext" - служебный комментарий, который обозначает создание локальной переменной или массива.
"7fffffff" - число в шестнадцатеричной системе. В переводе в десятеричную получится "2147483647".
"dump" - псевдо-инструкция, которая добавляет значения в секцию данных скрипта.

Если вы не поняли даже и половины из того, что здесь написано, то вам лучше будет обойти стороной данную тему - порог вхождения в ней довольно высокий, т.к. кроме скудного описания в Pawn Implementer's Guide никакой специализированной литературы нет (лично я за эту тему брался уже после освоения ассемблера под x86), а пользы для обычного скриптера на практике очень мало. Иными словами, не стоит оно того.