1
голосов
2ответов
2738 просмотров

Невозможно выйти из простого цикла сборки

Меня попросили создать простой цикл на языке ассемблера, но у меня возникли проблемы, поскольку цикл не заканчивается, когда должен, он продолжается в бесконечном цикле. Мне нужно передать ECX переменную, которая принимается путем ввода, но в моем коде ниже, даже когда я указываю счетчик напр...

9
голосов
5ответов
7456 просмотров

Разобрать на x86_64 на OSX10.6 (но с синтаксисом _Intel_)

Я знаю otool -tv, но я бы предпочел использовать синтаксис Intel , а не AT&T, в основном для того, чтобы легко следить по книге и не просматривать тысячи % и $. Я также был бы признателен за любые советы, где я могу найти файл конфигурации gdb. РЕДАКТИРОВАТЬ: Я забыл: у меня 64-битный п...

5
голосов
1ответов
1641 просмотров

Как отлаживать программы, написанные на fasm, под linux с помощью gdb?

Я написал простое "привет, мир" в fasm, и он работает, но как я могу сгенерировать отладочную информацию для gdb и edb (отладчик Эвана)?Компилятор Fasm мог создавать отладочные символы только в своем определенном формате - fas, который, конечно, gbd не мог понять.

2
голосов
1ответов
1565 просмотров

Что вызывает эту ошибку сегментации при использовании инструкций SSE?

Эта проблема сводит меня с ума.Код кажется ошибкой сегментации без уважительной причины: #define MULT_FLOAT4(X, Y) ({ \ asm volatile ( \ "movups (%0), %%xmm0\n\t" \ "mulps (%1), %%xmm0\n\t" \ "movups %%xmm0, (%1)" \ :: "r" (X), "r" (Y)); }) int main(void...

18
голосов
2ответов
18128 просмотров

Как реализованы структуры мьютексов и блокировок?

Я понимаю концепцию блокировок, мьютексов и других структур синхронизации, но как они реализованы?Предоставляются ли они ОС, или эти структуры зависят от специальных инструкций ЦП для MMU ЦП?

0
голосов
2ответов
1157 просмотров

сохранить встроенное значение регистра asm в указатель C, можно получить его на GCC, но не на VC

для простоты я просто вставлю пример вместо всего моего кода, который немного огромен.при переносе моего кода на VC ++ вместо использования GCC мне нужно переписать несколько встроенных функций сборки, которые получают указатели и сохраняют значения в этих указателях. представьте, например, c...

0
голосов
3ответов
2623 просмотров

Сборка x86: какой главный пролог и эпилог?

Я следую этому руководству по сборке x86.В каждом примере до сих пор используется то, что автор называет программой «c-драйвер», скомпилированной с помощью модуля сборки, для некоторой «инициализации».Что-то вроде: int main(void) { int ret = asm_main(); return ret; } Затем функция a...

0
голосов
2ответов
1556 просмотров

Ввод с клавиатуры на ассемблере x86 без INT

Мне нужно создать анимацию, которая будет ускоряться, когда пользователь удерживает нажатой клавишу, и возвращаться к нормальной скорости при отпускании клавиши.Я не могу «ждать», пока пользователь введет ключ, как это делают большинство прерываний DOS и BIOS, поскольку это останавливает анимаци...

1
голосов
1ответов
494 просмотров

Можем ли мы использовать десятичные числа (основание 10) непосредственно в MC6800?

Можно ли в Motorola 6800 использовать десятичные числа (основание 10) напрямую, как # $ 02 для шестнадцатеричного.

33
голосов
6ответов
37120 просмотров

Очень быстрый memcpy для обработки изображений?

Я выполняю обработку изображений на языке C, что требует копирования больших фрагментов данных в память - источник и место назначения никогда не перекрываются. Каков самый быстрый способ сделать это на платформе x86 с помощью GCC (где доступны SSE , SSE2, но НЕ SSE3)? Я ожидаю, что реше...

2
голосов
2ответов
2921 просмотров

Реализовать атомарное приращение с помощью атомарного свопа?

Предположим, я пишу (ассемблерный) код для ЦП, единственной атомарной операцией которого является безусловный своп - без LL / SC, без сравнения и обмена, только простой обмен.(ARM9 был бы примером такого зверя.) Есть ли способ выполнять атомарные операции увеличения / уменьшения с помощью операц...

4
голосов
3ответов
2328 просмотров

Переполнение левого Shift на 68k / x86?

Я слышал, что архитектуры Motorola 68000 и Intel x86 по-разному обрабатывают переполнение при левом смещении.В частности, 68k LSL и инструкции по сборке Intel SAL / SHL. Кто-нибудь знает подробности этого?Устанавливают ли они разные флаги или устанавливают их по-разному?Я попытался найти это ...

4
голосов
4ответов
7350 просмотров

Установка GNU Assembler в OSX

Как бы я ни старался гуглить, я не могу найти (относительно) простой в использовании инструкции по установке GNU Assembler на Mac. Я знаю, что могу использовать gcc -c (Apple Clang на Mac) для сборки файлов .s/.S, но я хочу использовать настоящий GNU Binutils as.

4
голосов
3ответов
3579 просмотров

Ассемблер 8086, INT 16,2

Я застрял на этой штуке, я хочу посмотреть, была ли нажата кнопка сдвига вправо, поэтому у меня есть этот код ассамблера: mov ah,2 int 16h ;calling INT 16,2 - Read Keyboard Flags interrupt mov ah,10000000b shl al,7 and al,10000000b cmp al,ah ;check if first bit is 1 j...

1
голосов
1ответов
17103 просмотров

Эффективный способ печати массива MIPS Int

Я работаю над домашним заданием по переводу написанной нами программы C на MIPS. Мой вопрос касается общего кодирования MIPS, а не конкретных проблем проекта. У меня возникла проблема с печатью вывода. У меня есть массив и строка вывода, объявленные как таковые: array: .word 7, 2, 5, -3, 3, 6...

6
голосов
2ответов
790 просмотров

Как перевести "pushl 2000" из asm AT&T в синтаксис Intel на i386

Я пытаюсь перевести следующее со сборки AT&T на сборку Intel: pushl 2000 Теперь это компилируется до: ff 35 d0 07 00 00 pushl 0x7d0 Но что бы я ни пытался, я не могу получить то же самое в Intel Synax, я пробовал: intel asm disassembly after compiling to at&t pus...

2
голосов
2ответов
3131 просмотров

Условная компиляция в коде ассемблера (.s) для iPhone - как?

У меня есть несколько строк кода ассемблера в файле .s. Мне нужно позвонить лишь по нескольким делам. Он отлично работает при сборке для устройства, однако, когда я переключаюсь на iPhone Simulator, я получаю ошибку «нет такой инструкции». Я попытался условно скомпилировать части файла .s, испол...

0
голосов
1ответов
2121 просмотров

Как переместить значение регистра с плавающей запятой в регистр общего назначения в MIPS?

У меня есть следующая часть сборки MIPS, запущенная на симуляторе MARS , учитываяниже: .data x: .space 4 # 4 bytes = 32 bits li $v0, 6 syscall На данный момент мне нужно значение с плавающей запятой в $f0, но мне нужно переместить значение в x. Если бы я мог передать содержимое регистр...

4
голосов
3ответов
1687 просмотров

Выполнение ассемблерного кода в DOS

Я пишу фрагмент сборки, который зарегистрирует tsr, а затем выйдет. Я изо всех сил пытаюсь понять, как правильно собрать это в формат, который я могу выполнить в dos. У меня есть доступ к Ubuntu 9.04 и Windows XP.(предпочтительнее использовать метод linux).Если кто-нибудь может сказать мне...

6
голосов
1ответов
206 просмотров

Кто-нибудь знает, где взять актуальный PVP-код Cray?

Я хочу написать эмулятор для одного из старых Crays, но наткнулся на камень преткновения.Кажется, я не могу найти для них никакого реального кода.(Что имеет смысл, я полагаю, большинство из них использовалось бы для защиты и тому подобного ..) Кто-нибудь знает, где я могу что-то найти?Бинарники ...

142
голосов
12ответов
172973 просмотров

В чем разница между MOV и LEA?

Я хотел бы знать, в чем разница между этими инструкциями: MOV AX, [TABLE-ADDR] и LEA AX, [TABLE-ADDR]

0
голосов
2ответов
7290 просмотров

Простой инкремент в ассемблере

Я застрял в этом.Я самостоятельно изучаю ассенблер и перевожу некоторые основные инструкции.Но я не могу с этим. Кто-нибудь может мне помочь, пожалуйста? int secuencia ( int n, EXPRESION * * o ) { int a, i; for ( i = 0; i < n; i++ ){ a = evaluarExpresion( *o ); // Im tryin...

2
голосов
4ответов
369 просмотров

Перевести FOR на ассемблер

Мне нужно перевести комментарии в методе на ассемблер.У меня есть примерное представление, но не могу. Кто-нибудь может мне помочь?Для архитектуры Intel x32: int secuencia ( int n, EXPRESION * * o ) { int a, i; //--- Translate from here ... for ( i = 0; i < n; i++ ){ a = evalua...

1
голосов
3ответов
1080 просмотров

Расшифровать файл с помощью XOR

Сначала я использую MASM, открываю зашифрованный файл, помещаю его содержимое в буфер и экспортирую в новый файл.У меня все работает, кроме части дешифрования. Я не уверен, нужно ли мне выполнить XOR для самого буфера, или я должен ссылаться на edx (где я храню буфер), или мне нужно выполнить...

4
голосов
1ответов
4992 просмотров

Синтаксис ljmp в встроенной сборке gcc

Я думал об использовании дальнего перехода для установки регистра сегмента кода (CS).Разобраться, почему я это делаю и почему я вообще занимаюсь сегментацией, займет некоторое время, так что терпите меня и считайте это академическим упражнением.Я не могу понять синтаксис правильно. Error: suff...

1
голосов
2ответов
2454 просмотров

написать сообщение на экран в сборке AT&T

Я пытаюсь написать свой собственный загрузчик, но у меня проблемы с записью на экран.Я нашел примеры использования прерываний: ; --------------------------------------------------------- ; Main program ; --------------------------------------------------------- mov si, msg ...

2
голосов
2ответов
2142 просмотров

Системные вызовы MIPS и регистры $ t

У регистров MIPS есть соглашение - регистры $ s должны сохраняться при вызовах подпрограмм, поэтому, если ваша подпрограмма изменяет их, она должна сохранять их в стеке, в то время как регистры $ t не сохраняются. Теперь, может ли системный вызов потенциально изменить регистр $ t?В симуляторе...

0
голосов
1ответов
78 просмотров

Проблема с выводом, не читает прыжок

.section .data msgI: .ascii "x = y\n" msgI_end: msgM: .ascii "x > y\n" msgM_end: msgL: .ascii "x < y\n" msgL_end: .section .text .globl main main: movl $5, %eax #x = 5 movl $5, %ebx #y = 10 cmp %ebx, %eax je IGUAL jg MAYOR jl MENO...

0
голосов
1ответов
660 просмотров

Предупреждение LNK4086 и отсутствующая точка входа dll в сборке asm VS2008

Я попытался скомпилировать следующий файл .asm в VS2008 (как часть пустого проекта Win32 dll, в который я добавил этот единственный файл .asm): .386 .model flat, stdcall option casemap:none TRUE equ 1 .code start: DllEntry proc instance:DWORD, reason:DWORD, reserved:D...

7
голосов
2ответов
1577 просмотров

Что означает% c во встроенном ассемблерном коде GCC?

Я пытаюсь понять этот встроенный ассемблерный код, который исходит из _hypercall0 здесь . asm volatile ("call hypercall_page+%c[offset]" \ : "=r" (__res) \ : [offset] "i" (__HYPERVISOR_##name * sizeof(hypercall_page[0])) \ : "memory", "edi", "esi", "edx", "ecx", "ebx"...