У меня в ассемблере есть этот код, который я хочу открыть с помощью программы на C, передав параметр и после выполнения этой программы на C, значение возвращается в мою программу на ассемблере.
В частности, это:
- Открыть программу на C, передав в качестве параметра String.
- Программа на C преобразует эту строку в число с плавающей точкой и вернет ее
- Я поймаю эту строкуи используйте его так, как мне нужно в моей программе сборки.
[ASM] // Executing Assembly code
\-------------> // Run C Program passing a value as parameter
[C Program] // Do Stuff
/-------------> // Return value that I can catch back in my Assembly code
[ASM] // Goes back to executing Assembly code using value the
// value received by the C program.
Важная информация: Я работаю в Linux и не уверен, что такое мой двоичный файл C.*. может быть?Можно также использовать несколько указателей на это.
PS: Мне известны все инструкции с плавающей запятой и бесчисленные другие варианты, которые у меня есть для выполнения всего этого в сборке, но это для моего класса Computer Architecture and Organization.и вот как мне это нужно.
Спасибо всем.
РЕДАКТИРОВАТЬ: Позвольте мне объяснить это немного лучше.
Я скомпилировал этоC-код в файл с именем Convert и поместил его в ту же папку, что и мой код Assembly (.s):
//#includes
int main(int argc, char* argv[]){
float fVal;
sscanf(argv[1], "%f", &fVal);
return fVal;
}
Через Assembly, я хочу выполнить Convert, передав строку как «3.1415» в качестве параметра.Преобразование преобразует его в float и возвращает.
Через сборку я тогда заберу это из стека и использую Float 3.1415.
Все, что я имею в виду, это что-то вроде системного вызова:
push parameter
push Executable's name
sys ! to wake the system to run my executable
pop eax ! pop the Float returned by Convert to EAX
Надеюсь, теперь стало понятнее.
Опять же, спасибо!