Есть ли какая то директива для него,которая позволяет задавать порядок расположения секций?Допустим я хочу что бы секция ".rdata" была последней в выходном файле.Как это линкеру указать?
_nic Никак. Последняя секция будет секция релоков. Предпоследняя - ресурсы. По другому никак. Если нет ни ресурсов, ни релоков, то можешь объединить .data и .rdata секции. Тогда секция .rdata будет последней делается директивой /MERGE
Нельзя объединять секцию ресурсов с какой-либо еще Нельзя объединять секцию релоков с какой-либо еще Все остальное - можно
можно сделать в фасме полностью валидный с точки зрения формата экзешник без какого-либо линкера с одной секцией и ресурсами Код (Text): format PE GUI 4.0 entry start include '%fasminc%\win32a.inc' IDC_EXIT = 100 IDC_OPEN = 101 HTCAPTION = 2 macro WM_CASE reg, [msg] { forward cmp reg, WM_#msg je .#msg } section '.rsrc' code readable writeable executable data resource ; resource directory directory RT_DIALOG,dialogs,\ RT_ICON, icons,\ RT_GROUP_ICON, group_icons ; resource subdirectories resource dialogs,\ 200, LANG_ENGLISH+SUBLANG_DEFAULT, main_dialog resource icons,\ 1, LANG_NEUTRAL, icon_data resource group_icons,\ 400, LANG_NEUTRAL, main_icon dialog main_dialog,'Test',0,0,164,140,DS_MODALFRAME+DS_CENTER+WS_POPUP+WS_VISIBLE+WS_CAPTION+WS_SYSMENU,\ WS_EX_DLGMODALFRAME, ,'Tahoma',8 dialogitem 'BUTTON','Exit',IDC_EXIT,115,120,42,14,WS_VISIBLE+WS_TABSTOP+BS_DEFPUSHBUTTON dialogitem 'BUTTON','Open',IDC_OPEN,115,60,42,14,WS_VISIBLE+WS_TABSTOP+BS_PUSHBUTTON enddialog icon main_icon, icon_data, 'ida.ico' end data align 4 proc DlgProc, hDlg, uMsg, wParam, lParam mov eax, [uMsg] WM_CASE eax, INITDIALOG, COMMAND, CLOSE, LBUTTONDOWN .r0: xor eax, eax jmp .return .INITDIALOG: invoke LoadIcon, [hInstance], 400 invoke SendMessage, [hDlg], WM_SETICON, ICON_BIG, eax jmp .r1 .COMMAND: mov eax, [wParam] cmp ax, IDCANCEL je .exit cmp ax, IDC_EXIT je .exit cmp ax, IDC_OPEN jne .r0 mov [ofn.lStructSize], sizeof.OPENFILENAME push [hDlg] pop [ofn.hwndOwner] mov [ofn.nMaxFile], 512 mov [ofn.lpstrFile], StrFile mov [ofn.lpstrTitle], StrTitle mov [ofn.lpstrFilter], StrFilter mov [ofn.Flags], OFN_FILEMUSTEXIST or OFN_PATHMUSTEXIST or OFN_HIDEREADONLY invoke GetOpenFileName, ofn test eax, eax jz .r1 invoke MessageBox, [hDlg], StrFile, StrTitle, 0 jmp .r1 .exit: invoke SendMessage, [hDlg], WM_CLOSE, 0, 0 jmp .r1 .LBUTTONDOWN: invoke SendMessage, [hDlg], WM_NCLBUTTONDOWN, HTCAPTION, [lParam] jmp .r1 .CLOSE: invoke EndDialog, [hDlg], 0 .r1: xor eax, eax inc eax .return: ret endp start: invoke GetModuleHandle, NULL mov [hInstance], eax invoke DialogBoxParam, eax, 200, 0, DlgProc, 0 invoke ExitProcess, 0 StrTitle db "Select File",0 StrFilter db "All Files (*.*)",0,"*.*",0,0 align 4 ofn OPENFILENAME hInstance dd ? StrFile rb 512 data import library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL',\ comdlg32,'COMDLG32.DLL' include '%fasminc%\APIA\KERNEL32.INC' include '%fasminc%\APIA\USER32.INC' include '%fasminc%\APIA\COMDLG32.INC' end data