![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сегодня я научился выводить строчки из программок.
Казалось бы, что может быть проще, чем вывести строчку на экран? printf, puts, writeln, echo и т.п. — эти функции/команды мы знаем с первых (или почти первых) уроков программирования. Всё так. И я их тоже знаю. Но речь не о них. Ресь о тех случаях, когда вы один-на-один с процессором, когда нет не только libc, но и самой операционки. Нет даже BIOS с его int <какой-то-там-не-помню>h. Нет вообще ничего. Только ваша программка, процессор Blackfin и UART, который ещё нужно настроить, прежде чем в него можно будет матюгнуться.
.text
.global start
start:
[--sp] = ASTAT;
[--sp] = RETS;
call uart_prepare;
r0.h = string_hello;
r0.l = string_hello;
call uart_put_string;
RETS = [sp++];
ASTAT = [sp++];
rets
.data
.global uart_put_string
uart_put_string: .string "Hello World!"
А вот текст uart.s я вам не покажу :)
Казалось бы, что может быть проще, чем вывести строчку на экран? printf, puts, writeln, echo и т.п. — эти функции/команды мы знаем с первых (или почти первых) уроков программирования. Всё так. И я их тоже знаю. Но речь не о них. Ресь о тех случаях, когда вы один-на-один с процессором, когда нет не только libc, но и самой операционки. Нет даже BIOS с его int <какой-то-там-не-помню>h. Нет вообще ничего. Только ваша программка, процессор Blackfin и UART, который ещё нужно настроить, прежде чем в него можно будет матюгнуться.
.text
.global start
start:
[--sp] = ASTAT;
[--sp] = RETS;
call uart_prepare;
r0.h = string_hello;
r0.l = string_hello;
call uart_put_string;
RETS = [sp++];
ASTAT = [sp++];
rets
.data
.global uart_put_string
uart_put_string: .string "Hello World!"
А вот текст uart.s я вам не покажу :)
no subject
Date: 2005-01-26 02:37 pm (UTC)no subject
Date: 2005-01-26 04:43 pm (UTC)no subject
Date: 2005-01-26 05:20 pm (UTC)