Comments 25
Пишем Hello world на WASM https://github.com/kpmy/tiss/blob/master/demo/bf/bf.go Извините, что не хватает воды на целую статью.
-3
Вообще, язык макросов FASM настолько мощный, что на нем можно написать еще один язык, причем не одним способом.
А можно написать макро для определения управляющих структур типа if/while? С вложенностью и генерацией меток?
0
UFO just landed and posted this here
Есть и "можно сделать" — все же немного разные вещи. Чтобы сделать if, нужно иметь таккую структуру, как стек.
0
Оно эквивалентно в данном случае, потому что оно «есть» сделано на макросах в виде инклюда. Например:
macro .if [arg]
{
common
__IF equ
local ..endif
__ENDIF equ ..endif
local ..else
__ELSE equ ..else
JNCOND __ELSE,arg
}
macro .else
{
jmp __ENDIF
__ELSE:
restore __IF
__IF equ ,
}
0
(ирония)
Предлагаем вашему вниманию лучший макроязык над ассемблером — Си
Предлагаем вашему вниманию лучший макроязык над ассемблером — Си
+4
А где ирония-то? Как боженька сказанул.
+1
А если серьезно, то я щупал как-то ассемблер, причем именно FASM. И пытался писать на нем Win32-приложение. 20 строчек на один вызов MessageBox… В общем, я быстро пришел к необходимости писать макросы. И спустя полчаса поймал себя на том, что изобретаю Паскаль :) И на этом заглох.
Для программирования на Асме нужен особый склад ума, видимо, противоположный моему. Я, приступая к задаче, первым делом стараюсь собрать ее в как можно более высокоуровневые блоки, продумать уровни абстракции… В язык уровня Си или Асма я могу влезать либо из соображений оптимизации, либо из спортивного интереса.
Для программирования на Асме нужен особый склад ума, видимо, противоположный моему. Я, приступая к задаче, первым делом стараюсь собрать ее в как можно более высокоуровневые блоки, продумать уровни абстракции… В язык уровня Си или Асма я могу влезать либо из соображений оптимизации, либо из спортивного интереса.
+1
И пытался писать на нем Win32-приложение. 20 строчек на один вызов MessageBox…
Вообще-то, {уже} нет.
Вот код примера из стандартной поставки:
; example of simplified Windows programming using complex macro features
include 'win32ax.inc' ; you can simply switch between win32ax, win32wx, win64ax and win64wx here
.code
start:
invoke MessageBox,HWND_DESKTOP,"Hi! I'm the example program!",invoke GetCommandLine,MB_OK
invoke ExitProcess,0
.end start
0
Ну да, примерно так. А если надо эту строку сформировать…
0
Да тоже в принципе ничего особого. kernel32 экспортирует всякую мелочь типа конкатенации. Через тот же invoke и вызовется. На самом деле, макросы у fasm а очень богаты, сейчас это уже не просто голый мнемокод.
0
… что, собственно, возвращает нас к шутке про Си.
Мне с моей чисто «академической» колокольни интересно, для какой надобности нынче пишут именно на Ассемблере, если мнемокод мигом превращает его в более высокоуровневый язык (но с явно «протекающей» абстракцией, мешающей, например, отлаживаться)
Мне с моей чисто «академической» колокольни интересно, для какой надобности нынче пишут именно на Ассемблере, если мнемокод мигом превращает его в более высокоуровневый язык (но с явно «протекающей» абстракцией, мешающей, например, отлаживаться)
0
Макрокод, видимо его вы имел в виду. Мнемокод и «язык ассемблера» — это синонимы.
Зачем? Есть специализированные задачи, шеллкоды какие-нибудь, например.
Да и разница между С и ассемблером с макросами все же есть. Вы возьмете FASM, используете макросные ifы, вызовы функций итд и в итоге получите крохотный файл в, скажем, бинарном формате. Без линкера, без заголовков.
Я использовал(ю периодически) для разработки своей ОС, как небольшое хобби.
Зачем? Есть специализированные задачи, шеллкоды какие-нибудь, например.
Да и разница между С и ассемблером с макросами все же есть. Вы возьмете FASM, используете макросные ifы, вызовы функций итд и в итоге получите крохотный файл в, скажем, бинарном формате. Без линкера, без заголовков.
Я использовал(ю периодически) для разработки своей ОС, как небольшое хобби.
0
Не, ну это не интересно. Где прерывания? Регистры? Оффсеты? Джампы в разные куски кода? А в таком виде никакой романтики…
0
И лучший макроязык над С — С++
0
Ужасный. Но лучше пока не придумали, да :)
+6
Можно, эти макросы входят в стандартную поставку.
+1
Синтаксис fasm — няшка! Код просто читается, бо синтаксис лаконичный, в отличие от других ассемблеров. Макросы очень мощные. Еще работает под *nix, и есть порт на ARM.
+1
Это вот сюда надо (вроде бы такого варианта там ещё нет :)
https://github.com/leachim6/hello-world
https://github.com/leachim6/hello-world
0
UFO just landed and posted this here
Sign up to leave a comment.
Пишем Hello World на FASM