NASM Крис касперски - Assembler

  1. Не даёт покое статья Криса Касперски хоть написана в ~2010 году. К минусам NASM'а можно отнести отсутствие поддержки уникода, платформы AMD x86-64, формата отладочной информации CodeView и некоторые странности синтаксиса. В частности, команда "mov eax, 1" не оптимизируется и транслятор умышленно оставляет место для 32-разрядного операнда. Если же мы хотим получить "короткий" вариант, размер операнда необходимо специфицировать явно: "mov eax, byte 1", что очень сильно напрягает или… использовать опцию "-On" для автоматической оптимизации Непосредственная трансляция примеров из SDK/DDK под NASM'ом невозможна, так что разрабатывать на нем драйвера под Windows может только очень крутой поклонник или извращен. NASM - один из лучших ассемблеров под Liux/BSD, а вот под Windows его позиции уже не так сильны (в основном из-за неполной совместимости с MASM'ом). С YASM такая же вещь Вот основные отличительные черты YASM'а от его предшественника: поддержка платформы AMD x86-64, большое количество исправленных ошибок (которых в NASM'е "нет"), оптимизированный парсер, переваривающий синтаксис как NASM, так и GAS, более полная поддержка COFF (DJGPP) и Win32 obj выходных файлов, генерация отладочной информации в формате CodeView, интернационализация (выполненная через GNU-библиотеку gettext), и прочие мелкие улучшения, которых вполне достаточно, чтобы потеснить NASM особенно в мире UNIX-подобных систем, где GAS-синтаксис по-прежнему играет ведущую роль Под Windows же YASM не имеет никаких ощутимых преимуществ перед MASM'ом за исключением того, что поддерживает возможность генерации двоичных файлов, особенно удобных для создания shell-кода, но бесполезных для разработчика драйверов. повторюсь статья написана ~2010 года. И nasm и yasm развивались.Вопрос такой: исправлены ли некоторые из этих проблем? (ниже год опубликования статьи криса касперски)


textual

Код к задаче: «NASM Крис касперски - Assembler»

dw __utf16__('Hello world! Привет, друг!'),0
dd __utf32__('Hello world! Привет, друг!'),0

СДЕЛАЙТЕ РЕПОСТ

11   голосов, оценка 3.727 из 5



Похожие ответы
  1. Нужно заменить в строке все символы # на &&. Нужно применять цепочечные команды. После первой замены исходная строка перестает копироваться в результирующую. При исходной строке 123#12345 в результат копируется только 123&&.

  1. Прикрепил файл .asm к проекту на с++ а в примере, который скачал указан лишь вывод в окно windows. А как вывести на консоль ? Вот код файла асм и файла с++ с++C++1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include "stdafx.h"   extern "C" {     void hello_world_asm(); };   int main(int argc, char** argv) {     hello_world_asm();         _getch();     return 0; }asm

  1. Целочисленные переменные в MASM32 могут быть: 1-байтовые (8 бит), обозначаются byte или db 2-байтовые (16 бит), обозначаются word или dw 4-байтовые (32 бит), обозначаются dword или dd 6-байтовые (48 бит), обозначаются fword или df 8-байтовые (64 бит), обозначаются qword или dq 10-байтовые (80 бит), обозначаются tbyte или dt 16-байтовые (128 бит), обозначаются oword или ??? в этом списке у всех кроме 16-байтовой переменной есть маленький эквивалент размера большой эквивалент размера (16 байт) это - oword можно например задать 16-байтную переменную

  1. Имеется пример ((2*c)-(d/3)) / (b-(a/4)) При клике на Btn1 значение выводится в Edit1 В качестве тестовых чисел я взял: a - 20 b - 10 c - 10 d - 30.Итоговый ответ должен получиться (20-(30/3))/(10-(20/4))=10/5=2 Использую ассемблерную вставку в Delphi

  1. Сам я работаю на Масме для одной темы изучаю пример на Фасме в определённых частях кода мне интересно узнавать какое значение у определённого объекта Для этого сделал тандем функций wsprintf и MessageBox принцип я думаю всем понятный первая функция переводит значение в текстовый вид а вторая банально выводит это значение через месаджбокс всё работает нормально но каждый раз ставить этот тандем в нужном месте мягко говоря утомляет по этому решил завернуть этот тандем в функцию

  1. Всем привет. Только начал изучение Ассемблера, поэтому требуется ваша помощь. Контроллер МС68HC11. "Необходимо написать программу, заполняющую ячейки $8200...$8205 значением $55, используя индексную адресацию." Не используя индексную адресацию получается, а вот с индексной проблемы Не индексная:

  1. Всем привет! Ост такая вот ошибка can not use 16-bit register with a 32-bit addres. Суть написанного понимаю но в чем я ошибся незнаю (

  1. Здравствуйте! Нужна помощь с программой. Пишу под DOS. Условие: С клавиатуры вводятся две строки, вывести на экран символы, которые содержатся в обеих строках. Вот мой код, работает неправильно, не совсем разобрался с регистром si, а точнее тем, как с ним взаимодействовать.

  1. Добрый вечер! Подскажите, пожалуйста... >>есть строка "qwerty uiopasdfgh jklzxcvbnm" >>Учитывая содержимое ВХ, загрузить в CL 12-й символ данных; >>Необходимо непосредственно загрузить в регистр SI порядковый номер первого пробела из цепочки данных. Есть код