Вопросы по теме 'calling-convention'
Почему .lib, скомпилированный в VS2003, не может связываться с кодом, скомпилированным с VS2008?
У нас только что был интересный опыт попытки связать набор кода, скомпилированный с помощью Visual Studio Express 2008, с .lib, скомпилированным с помощью Visual Studio 2003. Все на C ++. Если быть точным, это было ядро SystemC 2.2.0, которое...
1934 просмотров
schedule
13.07.2023
соглашение о вызове функций с boost::function_types
Недавно я экспериментировал с библиотекой boost::function_types и наткнулся на небольшую загвоздку. Я хочу узнать соглашение о вызове данной функции, однако я не совсем уверен, как это сделать. Вот что у меня есть до сих пор:
Это приводит к...
747 просмотров
schedule
08.03.2022
Каковы соглашения о вызовах системных вызовов UNIX и Linux (и функций пользовательского пространства) на i386 и x86-64
Следующие ссылки объясняют соглашения о системных вызовах x86-32 как для UNIX (вариант BSD), так и для Linux:
http://www.int80h.org/bsdasm/#system-calls
http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html...
127414 просмотров
schedule
18.02.2022
Вызов SDL/OpenGL из ассемблерного кода в Linux
Я пишу простую графическую программу на ассемблере для учебных целей; для этого я намеревался использовать либо OpenGL, либо SDL. Я пытаюсь вызвать функцию OpenGL/SDL из сборки.
Проблема в том, что в отличие от многих учебных пособий по сборке и...
2740 просмотров
schedule
01.10.2023
Может ли stdcall иметь переменные аргументы?
Насколько мне известно, переменные аргументы можно использовать только в соглашении об очистке стека вызывающей стороны. Кстати, WinApi StringCchPrintfW объявляется так (я удалил SAL).
__inline HRESULT __stdcall StringCchPrintfW(...
2418 просмотров
schedule
04.10.2023
Изменение соглашения о вызовах делегата C# на CDECL
У меня была эта проблема с С#, когда я использовал DotNet1.1.
Проблема вот в чем. У меня есть неуправляемая dll, в которой есть функция, которая принимает указатель на функцию (среди других аргументов). Когда я объявляю DLLImport в коде C#, я...
11135 просмотров
schedule
27.10.2023
Как C возвращает структуру?
(gdb) disas func
Dump of assembler code for function func:
0x00000000004004b8 <func+0>: push %rbp
0x00000000004004b9 <func+1>: mov %rsp,%rbp
0x00000000004004bc <func+4>: movl $0x64,0xfffffffffffffff0(%rbp)...
3174 просмотров
schedule
07.03.2022
Пользовательское соглашение о вызовах C++
Во время обратного проектирования я наткнулся на очень странную программу, которая использует соглашение о вызовах, которое передает один аргумент в eax (очень странный компилятор ??). Я хочу вызвать эту функцию сейчас и не знаю, как ее объявить, IDA...
1973 просмотров
schedule
17.03.2022
Регистры в компиляторах MIPS - что использовать?
В настоящее время я пишу игрушечный компилятор в качестве домашнего задания, ориентирован на архитектуру MIPS.
При переводе с языков более высокого уровня обычно доступны 18 регистров: с s0 на s7 , которые сохраняются для вызываемого...
536 просмотров
schedule
18.05.2023
Почему IA-32 имеет неинтуитивное соглашение о сохранении регистров вызывающего и вызываемого абонентов?
Общие соглашения о вызовах для IA-32 гласят:
• Callee-save registers
%ebx, %esi, %edi, %ebp, %esp
Callee must not change these. (Or restore the caller's values before returning.)
• Caller-save registers
%eax, %edx, %ecx, condition flags
Caller...
2874 просмотров
schedule
23.08.2023
Предполагая соглашение о вызовах при объединении C и x86 Assembly
У меня есть несколько процедур сборки, которые вызываются функциями C и принимают аргументы из них. Прямо сейчас я предполагаю, что эти аргументы передаются в стеке в порядке cdecl. Это справедливое предположение?
Обнаружит ли это компилятор...
694 просмотров
schedule
24.02.2023
printf float в сборке nasm 64-бит
Я хочу напечатать значение с плавающей запятой с помощью printf
global main
extern printf
section .data
string: db `%f\n`, 0
section .bss
rs: resq 1
[...]
movq xmm0, [rs]
mov rdi, string
mov rax, 0
call printf
rs...
4956 просмотров
schedule
04.10.2023
Бесконечная рекурсия без переполнения — возможно ли это?
Причина переполнения стека заключается в том, что пространство стека заканчивается, но что, если функции не имеют параметров, поэтому данные не нужно помещать в стек? При этом остается нажимать адрес «возврата», но в случае намеренной бесконечной...
971 просмотров
schedule
06.07.2023
(FASM) Как правильно вызвать WinAPI, например FindFirstFile и FindNextFile, без использования вызова?
Моя проблема заключается в следующем: у меня есть программа, которая ищет в текущем каталоге файл с определенным расширением. Код работает, если я использую макрос вызова, включенный в FASM. Но мне нужно вызвать winAPI, используя инструкцию вызова...
533 просмотров
schedule
20.03.2022
Как меняется указатель стека в этой программе с call и ret
Мои вопросы относятся к действиям, которые происходят между строками при изменении контекста, особенно в отношении RSP и RBP .
Учитывая эту очень простую программу:
Reading symbols from ./function_call...done.
(gdb) disass main
Dump of...
4604 просмотров
schedule
02.05.2024
Соглашение о вызовах системных вызовов x86 linux?
Учитывая этот код:
section .text
global _start
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg...
674 просмотров
schedule
16.12.2022
Как следует использовать __attribute__((pcs(aapcs))) в программах HardFP ABI?
У меня есть (очень) простая тестовая программа HardFP ABI. Он без проблем линкуется с другими исполняемыми файлами HardFP. Теперь я хотел использовать функцию из библиотеки Softfp ABI в своем коде, поэтому я изменил файл заголовка (.h) из этой...
560 просмотров
schedule
08.05.2024
Возвращаемое значение %eax Соглашение
Естественно, в i386 %eax содержит возвращаемое значение функции, да? Однако, видимо, это всего лишь условность. Можно ли изменить это соглашение и сделать возвращаемое значение %ebx или что-то в этом роде? И если вы сделаете это, заставит ли это...
898 просмотров
schedule
03.05.2023
Печать числа в сборке NASM с помощью printf
Я пытался заставить это напечатать 12345 некоторое время. Кто-нибудь может подсказать, что мне делать? Он напечатает три строки текста, затем в четвертой строке напечатает «возраст», который, как я предполагаю, является остатком в стеке из строки 2....
6466 просмотров
schedule
19.01.2023
О вызове функции C из ассемблера и наоборот
Я пробовал вызывать ASM из C и наоборот. По крайней мере, на данный момент это работало идеально, но у меня есть вопросы. Вот мой код:
test.S последовал:
.text
.global _start
.global _main
.type _main, @function...
893 просмотров
schedule
23.03.2023