Вопросы по теме 'calling-convention'

Почему .lib, скомпилированный в VS2003, не может связываться с кодом, скомпилированным с VS2008?
У нас только что был интересный опыт попытки связать набор кода, скомпилированный с помощью Visual Studio Express 2008, с .lib, скомпилированным с помощью Visual Studio 2003. Все на C ++. Если быть точным, это было ядро ​​ SystemC 2.2.0, которое...
1934 просмотров

соглашение о вызове функций с 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 просмотров

Вызов SDL/OpenGL из ассемблерного кода в Linux
Я пишу простую графическую программу на ассемблере для учебных целей; для этого я намеревался использовать либо OpenGL, либо SDL. Я пытаюсь вызвать функцию OpenGL/SDL из сборки. Проблема в том, что в отличие от многих учебных пособий по сборке и...
2740 просмотров
schedule 01.10.2023

Может ли stdcall иметь переменные аргументы?
Насколько мне известно, переменные аргументы можно использовать только в соглашении об очистке стека вызывающей стороны. Кстати, WinApi StringCchPrintfW объявляется так (я удалил SAL). __inline HRESULT __stdcall StringCchPrintfW(...
2418 просмотров

Изменение соглашения о вызовах делегата 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 просмотров

Пользовательское соглашение о вызовах C++
Во время обратного проектирования я наткнулся на очень странную программу, которая использует соглашение о вызовах, которое передает один аргумент в eax (очень странный компилятор ??). Я хочу вызвать эту функцию сейчас и не знаю, как ее объявить, IDA...
1973 просмотров
schedule 17.03.2022

Регистры в компиляторах MIPS - что использовать?
В настоящее время я пишу игрушечный компилятор в качестве домашнего задания, ориентирован на архитектуру MIPS. При переводе с языков более высокого уровня обычно доступны 18 регистров: с s0 на s7 , которые сохраняются для вызываемого...
536 просмотров

Почему 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 просмотров

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 просмотров

Бесконечная рекурсия без переполнения — возможно ли это?
Причина переполнения стека заключается в том, что пространство стека заканчивается, но что, если функции не имеют параметров, поэтому данные не нужно помещать в стек? При этом остается нажимать адрес «возврата», но в случае намеренной бесконечной...
971 просмотров

(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 просмотров

Как следует использовать __attribute__((pcs(aapcs))) в программах HardFP ABI?
У меня есть (очень) простая тестовая программа HardFP ABI. Он без проблем линкуется с другими исполняемыми файлами HardFP. Теперь я хотел использовать функцию из библиотеки Softfp ABI в своем коде, поэтому я изменил файл заголовка (.h) из этой...
560 просмотров

Возвращаемое значение %eax Соглашение
Естественно, в i386 %eax содержит возвращаемое значение функции, да? Однако, видимо, это всего лишь условность. Можно ли изменить это соглашение и сделать возвращаемое значение %ebx или что-то в этом роде? И если вы сделаете это, заставит ли это...
898 просмотров
schedule 03.05.2023

Печать числа в сборке NASM с помощью printf
Я пытался заставить это напечатать 12345 некоторое время. Кто-нибудь может подсказать, что мне делать? Он напечатает три строки текста, затем в четвертой строке напечатает «возраст», который, как я предполагаю, является остатком в стеке из строки 2....
6466 просмотров

О вызове функции C из ассемблера и наоборот
Я пробовал вызывать ASM из C и наоборот. По крайней мере, на данный момент это работало идеально, но у меня есть вопросы. Вот мой код: test.S последовал: .text .global _start .global _main .type _main, @function...
893 просмотров