Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2020, 17:48   #1
wadic2
Новичок
Джуниор
 
Регистрация: 12.10.2020
Сообщений: 6
По умолчанию Получение регистра ebx

Всем доброго времени суток!
У меня убунту. Я пишу на со вставками ассемблера. Где посмотреть какой тип ассемблера использует убунту (GAS NASM)?
Написал такую программу:


Код:
#include <stdio.h>
#include <locale.h>           // Для отображения кирилицы.
//#include <stdlib.h>           // Чтобы работала функция strtol().







int main()
{
setlocale(LC_ALL, "Rus");




volatile char sum[100];




__asm__
(
".extern sum"

"xor ebx, ebx"


"movl 5, ebx"

"movl %ebx, sum"


);





 printf("%s", sum);





return 1;
}

Вообще мне нужно строку посмотреть в ebx, то есть этот код:
"xor ebx, ebx"
"movl 5, ebx"
я просто для проверки написал, он не нужен. ebx хранит данные в двоичном виде, пробовал конвертировать на Си, но безрезультатно.

Последний раз редактировалось wadic2; 13.10.2020 в 11:12.
wadic2 вне форума Ответить с цитированием
Старый 13.10.2020, 02:30   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Это не от Убунту зависит, а от компилятора
Если GCC, то там вообще что-то хитрое, типа https://ru.wikipedia.org/wiki/GCC_Inline_Assembly
Black Fregat вне форума Ответить с цитированием
Старый 13.10.2020, 09:18   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от wadic2 Посмотреть сообщение
ebx хранит данные в шестнацетиричном виде
Феерично!
У вас каша в голове.
Вы уж либо ассемблер используйте, либо printf.
Начните с того, какие типы данных есть в С и как они ложатся на процессор/ассемблер.
waleri вне форума Ответить с цитированием
Старый 13.10.2020, 10:14   #4
wadic2
Новичок
Джуниор
 
Регистрация: 12.10.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Феерично!
У вас каша в голове.
Вы уж либо ассемблер используйте, либо printf.
Начните с того, какие типы данных есть в С и как они ложатся на процессор/ассемблер.
Есть возможность использовать и Си и ассемблер. Я явно написал что нужна строка. Я вчера неправильно маленько написал, в процессоре (регистре правильно сказать) по идее в двоичном. Не нужно меня отсылать в гугл, я сам туда дорогу знаю. Вы для чего на форуме сидите? Чтобы заумное написать, иди в гугл, возьми 30 грамм того то и свари.
wadic2 вне форума Ответить с цитированием
Старый 13.10.2020, 12:22   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Я явно написал что нужна строка
Вообще-то вы написали:
Цитата:
Сообщение от wadic2 Посмотреть сообщение
Вообще мне нужно строку посмотреть в ebx
Что само по себе нонсенс - на уровне процессора нет понятия строк.
Так что вам в итоге нужно:
а) Алгоритм конверсии в строку?
б) Имя функции для конверсии строку?
в) Написать за вас код функции для конверсии в строку (на ассемблере)?

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Вы для чего на форуме сидите?
Чтоб отвечать на глупые вопросы.
Чтоб забросив все дела выяснять что нужно разным ТС-ам.
Чтоб выслушивать хамов, которые не могут связать двух слов.
waleri вне форума Ответить с цитированием
Старый 13.10.2020, 12:55   #6
wadic2
Новичок
Джуниор
 
Регистрация: 12.10.2020
Сообщений: 6
По умолчанию

"Что само по себе нонсенс - на уровне процессора нет понятия строк." - я в курсе, не всегда нужно явно воспринимать. Грубо говоря в регистре строка, мы ее получаем.
"а) Так что вам в итоге нужно:" - я опубликовал программу, она не работает(но компилируется). Мне нужно знать имеющийся код правильно я написал? Как сейчас я вижу реализацию: в регистре двоичные данные, читаем их на ассемблере, помещаем в Си, и для начала нужно хотя бы двоичные данные вывести на Си.
"б) Имя функции для конверсии строку?" - да, какой то конвертатор двоичного в десятичное (а регистре в первую очередь симаолы строки содержаться (строка)).
"в) Написать за вас код функции для конверсии в строку (на ассемблере)?" - по Вашему желанию, я не заставляю. Вообще этот вопрос к вопросу "в" относиться. Если получить двоичные данные на Си, то можно на Си написать. На Си нет стандартных готовых функций?
"Чтоб отвечать на глупые вопросы." - согласен. Тогда не жалуйтесь, что убогий дибил обратился к Вам.
На форуме люди ждут не гугла, о нем уже все знают. Ждут кода в лучшем случае. Или разжеванных разъяснений. А не так что как для профи сказал: да у тебя проблема с сингулярностью, всего то, ну ты понял, дальше сам.
Начать нужно с того, какой ассемблер (GAS, NASM, ...). На сколько я вижу у меня GAS, по крайней мере код компилируется. Печально что на линукс не интел. И спасибо что бросаете дела и помогаете новичкам. И я ни кому не хамил.

Последний раз редактировалось wadic2; 13.10.2020 в 14:41.
wadic2 вне форума Ответить с цитированием
Старый 13.10.2020, 14:50   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Грубо говоря в регистре строка, мы ее получаем.
Очень хочется посмотреть на регистр, в который помещается строка. Ну если она не длиннее 4 символов ASCII в 32-битном процессоре - тогда конечно.
Часом, не "адрес строки" имеется в виду?
Цитата:
убогий дибил
правильное написание "дебил"

Последний раз редактировалось digitalis; 13.10.2020 в 14:54.
digitalis вне форума Ответить с цитированием
Старый 13.10.2020, 16:31   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Мне нужно знать имеющийся код правильно я написал?
Нет.

Цитата:
Сообщение от wadic2 Посмотреть сообщение
На форуме люди ждут не гугла
На форуме есть риск, что каков вопрос, таков и ответ.
Толком не сказали, что вам надо, а потом недовольны...

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Ждут кода в лучшем случае. Или разжеванных разъяснений.
Ну так так и напишите.
Вы даже толком не можете сформулировать задачу, из вас приходиться тянуть все клещами.

Цитата:
Сообщение от wadic2 Посмотреть сообщение
Печально что на линукс не интел.
Ну вот, опять мечем перлы...
waleri вне форума Ответить с цитированием
Старый 13.10.2020, 16:42   #9
wadic2
Новичок
Джуниор
 
Регистрация: 12.10.2020
Сообщений: 6
По умолчанию

Мне нужно прочесть ebx и вывести его на Си в терминал. Пока все.
Этот я код для проверки написал (работает вообще мой код ассемблер или нет):
".extern sum"
"xor ebx, ebx"
"movl 5, ebx"
"movl %ebx, sum"

Нужно так:
".extern sum"
"movl %ebx, sum"

Ладно, пусть пока GAS будет, я думаю там немного кода будет.

Последний раз редактировалось wadic2; 13.10.2020 в 16:44.
wadic2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различить вид регистра Anton931 Общие вопросы Delphi 5 23.05.2015 21:48
Значение регистра. SPLER Общие вопросы Delphi 13 27.05.2014 21:52
Преобразовать все буквы нижнего регистра в буквы верхнего регистра druger Помощь студентам 5 18.09.2011 17:27
Значение регистра _AN. ТриСемёрки Общие вопросы C/C++ 3 25.03.2011 18:57
Смена регистра Last Microsoft Office Excel 6 12.08.2009 14:52