/*
* Программа вывода нескольких строк на экран
*
*/
/* Секция данных, распределение памяти */
.data
greeting: .asciz "Hello from Assembler!\n"
/* Секция команд процессора */
.text
.global _start # точка входа - глобальная метка
_start:
/* В отладчике остановить процесс в контрольной точке можно только
со второй инструкции, поэтому внедряем фиктивную команду */
nop # пустая операция - для отладки
/* Подготавливаем стек к работе с локальными переменными */
pushl %ebp # сохраняем текущий контекст стека
movl %esp, %ebp
movl $22, %esi
next:
/* Выводим строку на экран с помощью системного вызова ОС Linux */
movl $4, %eax # системный вызов write
movl $1, %ebx # выводим в стандартный поток вывода
leal greeting, %ecx # загружаем адрес строки для вывода
movl $22, %edx # указываем количество байт (длину)
int $0x80 # обращаемся к ОС
subl $1, %esi
cmpl $0, %esi
je done
jmp next
done:
/* Восстанавливаем контекст стека */
movl %ebp, %esp # восстанавливаем контекст стека
popl %ebp
/* Выполняем системный вызов для корректного завершения программы */
movl $1, %eax # системный вызов _exit
movl $0, %ebx # статус выхода 0, успешное завершение
int $0x80 # обращаемся к ОС
.end # последняя строка исходного текста
LyoKICog0J/RgNC+0LPRgNCw0LzQvNCwINCy0YvQstC+0LTQsCDQvdC10YHQutC+0LvRjNC60LjRhSDRgdGC0YDQvtC6INC90LAg0Y3QutGA0LDQvQogKgogKi8KCi8qINCh0LXQutGG0LjRjyDQtNCw0L3QvdGL0YUsINGA0LDRgdC/0YDQtdC00LXQu9C10L3QuNC1INC/0LDQvNGP0YLQuCAqLwoKLmRhdGEKCiAgICBncmVldGluZzogLmFzY2l6ICJIZWxsbyBmcm9tIEFzc2VtYmxlciFcbiIKCi8qINCh0LXQutGG0LjRjyDQutC+0LzQsNC90LQg0L/RgNC+0YbQtdGB0YHQvtGA0LAgKi8KCi50ZXh0CgogICAgLmdsb2JhbCBfc3RhcnQgICAgICAgICAgICAgICAgICAgICAgIyDRgtC+0YfQutCwINCy0YXQvtC00LAgLSDQs9C70L7QsdCw0LvRjNC90LDRjyDQvNC10YLQutCwCgogICAgX3N0YXJ0OgoKICAgIC8qINCSINC+0YLQu9Cw0LTRh9C40LrQtSDQvtGB0YLQsNC90L7QstC40YLRjCDQv9GA0L7RhtC10YHRgSDQsiDQutC+0L3RgtGA0L7Qu9GM0L3QvtC5INGC0L7Rh9C60LUg0LzQvtC20L3QviDRgtC+0LvRjNC60L4KICAgICAgINGB0L4g0LLRgtC+0YDQvtC5INC40L3RgdGC0YDRg9C60YbQuNC4LCDQv9C+0Y3RgtC+0LzRgyDQstC90LXQtNGA0Y/QtdC8INGE0LjQutGC0LjQstC90YPRjiDQutC+0LzQsNC90LTRgyAqLwogICAgICAgIG5vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDQv9GD0YHRgtCw0Y8g0L7Qv9C10YDQsNGG0LjRjyAtINC00LvRjyDQvtGC0LvQsNC00LrQuAoKICAgIC8qINCf0L7QtNCz0L7RgtCw0LLQu9C40LLQsNC10Lwg0YHRgtC10Log0Log0YDQsNCx0L7RgtC1INGBINC70L7QutCw0LvRjNC90YvQvNC4INC/0LXRgNC10LzQtdC90L3Ri9C80LggKi8KICAgICAgICBwdXNobCAlZWJwICAgICAgICAgICAgICAgICAgICAgICMg0YHQvtGF0YDQsNC90Y/QtdC8INGC0LXQutGD0YnQuNC5INC60L7QvdGC0LXQutGB0YIg0YHRgtC10LrQsAogICAgICAgIG1vdmwgICVlc3AsICVlYnAKCiAgICAgICAgbW92bCAkMjIsICVlc2kKCiAgICBuZXh0OgoKICAgIC8qINCS0YvQstC+0LTQuNC8INGB0YLRgNC+0LrRgyDQvdCwINGN0LrRgNCw0L0g0YEg0L/QvtC80L7RidGM0Y4g0YHQuNGB0YLQtdC80L3QvtCz0L4g0LLRi9C30L7QstCwINCe0KEgTGludXggKi8KICAgICAgICBtb3ZsICQ0LCAlZWF4ICAgICAgICAgICAgICAgICAgICMg0YHQuNGB0YLQtdC80L3Ri9C5INCy0YvQt9C+0LIgd3JpdGUKICAgICAgICBtb3ZsICQxLCAlZWJ4ICAgICAgICAgICAgICAgICAgICMg0LLRi9Cy0L7QtNC40Lwg0LIg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YLQvtC6INCy0YvQstC+0LTQsAogICAgICAgIGxlYWwgZ3JlZXRpbmcsICVlY3ggICAgICAgICAgICAgIyDQt9Cw0LPRgNGD0LbQsNC10Lwg0LDQtNGA0LXRgSDRgdGC0YDQvtC60Lgg0LTQu9GPINCy0YvQstC+0LTQsAogICAgICAgIG1vdmwgJDIyLCAlZWR4ICAgICAgICAgICAgICAgICAgIyDRg9C60LDQt9GL0LLQsNC10Lwg0LrQvtC70LjRh9C10YHRgtCy0L4g0LHQsNC50YIgKNC00LvQuNC90YMpCiAgICAgICAgaW50ICAkMHg4MCAgICAgICAgICAgICAgICAgICAgIyDQvtCx0YDQsNGJ0LDQtdC80YHRjyDQuiDQntChCgogICAgICAgIHN1YmwgJDEsICVlc2kKICAgICAgICBjbXBsICQwLCAlZXNpCiAgICAgICAgamUgZG9uZQogICAgICAgIGptcCBuZXh0CgogICAgZG9uZToKCiAgICAvKiDQktC+0YHRgdGC0LDQvdCw0LLQu9C40LLQsNC10Lwg0LrQvtC90YLQtdC60YHRgiDRgdGC0LXQutCwICovCiAgICAgICAgbW92bCAlZWJwLCAlZXNwICAgICAgICAgICAgICAgICAjINCy0L7RgdGB0YLQsNC90LDQstC70LjQstCw0LXQvCDQutC+0L3RgtC10LrRgdGCINGB0YLQtdC60LAKICAgICAgICBwb3BsICVlYnAKCiAgICAvKiDQktGL0L/QvtC70L3Rj9C10Lwg0YHQuNGB0YLQtdC80L3Ri9C5INCy0YvQt9C+0LIg0LTQu9GPINC60L7RgNGA0LXQutGC0L3QvtCz0L4g0LfQsNCy0LXRgNGI0LXQvdC40Y8g0L/RgNC+0LPRgNCw0LzQvNGLICovCiAgICAgICAgbW92bCAkMSwgJWVheCAgICAgICAgICAgICAgICAgICAjINGB0LjRgdGC0LXQvNC90YvQuSDQstGL0LfQvtCyIF9leGl0CiAgICAgICAgbW92bCAkMCwgJWVieCAgICAgICAgICAgICAgICAgICAjINGB0YLQsNGC0YPRgSDQstGL0YXQvtC00LAgMCwg0YPRgdC/0LXRiNC90L7QtSDQt9Cw0LLQtdGA0YjQtdC90LjQtQogICAgICAgIGludCAgJDB4ODAgICAgICAgICAgICAgICAgICAgICAgIyDQvtCx0YDQsNGJ0LDQtdC80YHRjyDQuiDQntChCgouZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyDQv9C+0YHQu9C10LTQvdGP0Y8g0YHRgtGA0L7QutCwINC40YHRhdC+0LTQvdC+0LPQviDRgtC10LrRgdGC0LAgICAg
Main.java:8: error: class, interface, or enum expected
.data
^
Main.java:16: error: illegal character: '#'
.global _start # ????? ????? - ?????????? ?????
^
Main.java:22: error: illegal character: '#'
nop # ?????? ???????? - ??? ???????
^
Main.java:25: error: illegal character: '#'
pushl %ebp # ????????? ??????? ???????? ?????
^
Main.java:33: error: illegal character: '#'
movl $4, %eax # ????????? ????? write
^
Main.java:34: error: illegal character: '#'
movl $1, %ebx # ??????? ? ??????????? ????? ??????
^
Main.java:35: error: illegal character: '#'
leal greeting, %ecx # ????????? ????? ?????? ??? ??????
^
Main.java:36: error: illegal character: '#'
movl $22, %edx # ????????? ?????????? ???? (?????)
^
Main.java:37: error: illegal character: '#'
int $0x80 # ?????????? ? ??
^
Main.java:47: error: illegal character: '#'
movl %ebp, %esp # ??????????????? ???????? ?????
^
Main.java:51: error: illegal character: '#'
movl $1, %eax # ????????? ????? _exit
^
Main.java:52: error: illegal character: '#'
movl $0, %ebx # ?????? ?????? 0, ???????? ??????????
^
Main.java:53: error: illegal character: '#'
int $0x80 # ?????????? ? ??
^
Main.java:55: error: illegal character: '#'
.end # ????????? ?????? ????????? ??????
^
14 errors