"Hello world", нужны комментарии к коду - Assembler
Формулировка задачи:
.text .global _start _start: movb $4, %al movb $1, %bl movl $str, %ecx movl $12, %edx int $0x80 movb $1, %al str: .ascii "Hello world!" .byte 10
в gcc это можно собрать в 456 байт, но я не могу разобраться как это работает
Решение задачи: «"Hello world", нужны комментарии к коду»
textual
Листинг программы
.text ; начало сегмента кода .global _start ; видимый снаружи символ (метка входа) _start: ; сама метка movb $4, %al ; загнать байт (число 4) в регистр al movb $1, %bl ; загнать байт (число 1) в регистр bl movl $str, %ecx ; поместить адрес строки в регистр ecx movl $12, %edx ; поместить двойное слово (число 12) в регистр edx int $0x80 ; системный вызов (надо в манах искать) movb $1, %al ; загнать байт (число 1) в регистр al (код возврата типо) ; объявления данных str: .ascii "Hello world!" .byte 10
Объяснение кода листинга программы
- .text — сегмент кода.
- .global _start — видимый снаружи символ (метка входа).
- _start: — сама метка.
- movb $4, %al — загнать байт (число 4) в регистр al.
- movb $1, %bl — загнать байт (число 1) в регистр bl.
- movl $str, %ecx — поместить адрес строки в регистр ecx.
- movl $12, %edx — поместить двойное слово (число 12) в регистр edx.
- int $0x80 — системный вызов (надо в манах искать).
- movb $1, %al — загнать байт (число 1) в регистр al (код возврата типо).
- str: — начало строки.
- .ascii
Hello world!
— строкаHello world!
в кодировке ascii. - .byte 10 — следующий байт со значением 10 (символ перевода строки).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д