Результаты поиска
Фермы веб-серверов с IIS ? Основная Информация
Может ли кто-нибудь указать мне на ресурс, который объясняет, как идти о том, что 2+ IIS веб-сервер кластеризован (или Webfarm не уверен, что его называют) ?
Все, что мне нужно, это что-то основное, обзор того, как и с чего начать. Кажется, ничего не могу найти...
Armv4i (Windows Mobile 6) дизассемблер собственного кода
Кто-нибудь знает о дизассемблере для ARMV4i исполняемых файлов и DLLs?
У меня есть плагин DLL, который я пишу с очень редким data abort (<5% временем), который я сузил до конкретной функции (через dumpbin и вывод адреса data abort). Однако это довольно большая функция, и я хотел бы немного сузить ее. Я знаю, что это происходит в вызове memset() , но эта конкретная функция имеет около 35 из них, поэтому я надеялся, что, посмотрев на разборку, я смогу выяснить, где на самом деле находится проблема.
Нарушается ли GCC при приеме адреса аргумента на ARM7TDMI?
Фрагмент кода My C принимает адрес аргумента и сохраняет его в энергонезависимой памяти (предварительно обработанный код):
void foo(unsigned int x) {
*(volatile unsigned int*)(0x4000000 + 0xd4) = (unsigned int)(&x);
}
int main() {
foo(1);
while(1);
}
Я использовал SVN версию GCC для компиляции этого кода. В конце функции foo я ожидал бы, что значение 1 будет сохранено в стеке, а в 0x40000d4-адрес , указывающий на это значение. Когда я компилирую без оптимизации, используя флаг -O0, я получаю ожидаемый выход ARM7TMDI assembly (прокомментированный для вашего удобства):
.align 2
.global foo
.type foo, %function
foo:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
sub sp, sp, #8
str r0, [sp, #4] @ 3. Store the argument on the stack
mov r3, #67108864
add r3, r3, #212
add r2, sp, #4 @ 4. Address of the stack variable
str r2, [r3, #0] @ 5. Store the address at 0x40000d4
add sp, sp, #8
bx lr
.size foo, .-foo
.align 2
.global main
.type main, %function
main:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, lr}
mov r0, #1 @ 1. Pass the argument in register 0
bl foo @ 2. Call function foo
.L4:
b .L4
.size main, .-main
.ident "GCC: (GNU) 4.4.0 20080820 (experimental)"
Он четко сохраняет аргумент сначала в стеке, а оттуда сохраняет его в 0x40000d4 . Когда я компилирую с оптимизациями, используя -O1 , я получаю что-то неожиданное:
.align 2
.global foo
.type foo, %function
foo:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 8
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
sub sp, sp, #8
mov r2, #67108864
add r3, sp, #4 @ 3. Address of *something* on the stack
str r3, [r2, #212] @ 4. Store the address at 0x40000d4
add sp, sp, #8
bx lr
.size foo, .-foo
.align 2
.global main
.type main, %function
main:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, lr}
mov r0, #1 @ 1. Pass the argument in register 0
bl foo @ 2. Call function foo
.L4:
b .L4
.size main, .-main
.ident "GCC: (GNU) 4.4.0 20080820 (experimental)"
На этот раз аргумент никогда не сохраняется в стеке, даже если что- то из стека все еще хранится в 0x40000d4 .
Это просто ожидаемое / неопределенное поведение? Я сделал что-то не так или действительно нашел компилятор Bug™?
Бесплатный Волновой Синтезатор?
Мне нужно реализовать волновой синтезатор в ядре ARM Cortex-M3. Я ищу любой код или инструменты, которые помогут мне начать работу.
Я знаю об этой реализации AVR . Я действительно преобразовал его в PIC некоторое время назад. Теперь я ищу что-то похожее, но немного лучше звучащее.
Код ANSI C был бы замечательным. Любые фрагменты кода (C или C++), образцы, инструменты или просто общая информация будут очень признательны.
Спасибо.