Permalink
Browse files

bugfixes by Norbert Szetei

  • Loading branch information...
1 parent d074d09 commit b13860e2fc3eb147cfa53b494282df628cfd6428 @dennis714 committed Dec 2, 2016
View
@@ -1,7 +1,7 @@
\begin{center}
\begin{tabular}{ | l | l | }
\hline
-\RU{Старшие 32 бита}\EN{High 32-bit part}\ES{Parte alta de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{}\THAph{}\NLph{}\FRph{Partie 32 bits haute} & \RU{младшие 32 бита}\EN{low 32-bit part}\ES{parte baja de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{}\THAph{}\NLph{}\FRph{Partie 32 bits basse} \\
+\RU{Старшие 32 бита}\EN{High 32-bit part}\ES{Parte alta de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{}\THAph{}\NLph{}\FR{Partie 32 bits haute} & \RU{младшие 32 бита}\EN{low 32-bit part}\ES{parte baja de 32 bits}\PTBRph{}\PLph{}\ITAph{}\DEph{}\THAph{}\NLph{}\FR{Partie 32 bits basse} \\
\hline
\multicolumn{2}{ | c | }{X0} \\
\hline
View
@@ -11,7 +11,7 @@
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
- \FRph{exposant}
+ \FR{exposant}
} &
\bitbox{23}{%
\RU{мантисса}%
@@ -20,7 +20,7 @@
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
- \FRph{mantisse ou fraction}
+ \FR{mantisse ou fraction}
}
\end{bytefield}
\end{center}
@@ -33,6 +33,6 @@
\PTBRph{}%
\DEph{}\PLph{}%
\ITAph{}%
- \FRph{signe}
+ \FR{signe}
)
\end{center}
View
@@ -144,8 +144,7 @@
\DE{Abb.}%
\THAph{}%
\NLph{}%
- \FR{fig.}%
-\xspace}
+ \FR{fig.}\xspace}
\newcommand{\figref}[1]{\figname{}\ref{#1}\xspace}
\newcommand{\listingname}{%
\RU{листинг.}%
@@ -666,7 +665,7 @@
\PTBR{\href{URL}{\PTBRph{}}}%
\IT{\href{URL}{\ITAph{}}}%
\DE{\href{URL}{\DEph{}}}%
- \FR{\href{URL}{\FRph{}}}% Link : https://fr.wikipedia.org/wiki/Alignement_en_m%C3%A9moire {Wikipedia: Alignement en mémoire}
+ \FR{\href{https://fr.wikipedia.org/wiki/Alignement_en_m\%C3\%A9moire}{Wikipedia: Alignement en mémoire}}%
}
\newcommand{\OracleTablesName}{oracle tables\xspace}
@@ -680,7 +679,7 @@
\PL{\href{URL}{\PLph{}}}%
\PTBR{\href{URL}{\PTBRph{}}}%
\ITA{\href{URL}{\ITAph{}}}%
- \FR{\href{URL}{\FRph{}}}% Link : https://fr.wikipedia.org/wiki/Multiply-accumulate {Wikipedia: Multiply-accumulate}
+ \FR{\href{https://fr.wikipedia.org/wiki/Multiply-accumulate}{Wikipedia: Multiply-accumulate}}%
}
\newcommand{\BGREPURL}{\href{http://go.yurichev.com/17017}{GitHub}}
@@ -48,7 +48,7 @@ \subsubsection{MIPS relocations}
So the high part of the rand\_state variable address is residing in register \$V1.
The \LW instruction at address 0x10 sums up the high and low parts and loads the value of the rand\_state
-variable into \$V1.
+variable into \$V0.
The \SW instruction at address 0x54 do the summing again and then stores the new value
to the rand\_state global variable.
@@ -48,7 +48,7 @@ \subsubsection{Перемещения в MIPS (\q{relocs})}
Так что старшая часть адреса переменной rand\_state находится в регистре \$V1.
Инструкция \LW по адресу 0x10 просуммирует старшую и младшую часть и загрузит значение переменной
-rand\_state в \$V1.
+rand\_state в \$V0.
Инструкция \SW по адресу 0x54 также просуммирует и затем запишет новое значение в глобальную переменную
rand\_state.
@@ -9,7 +9,7 @@ f:
mov x1, 1
lsl x0, x1, x0 ; X0 = X1<<X0 = 1<<i
mov x1, x0
-; X1 = 1<<1
+; X1 = 1<<i
ldr x0, [sp,8]
; X0 = a
and x0, x1, x0
@@ -9,7 +9,7 @@ f:
mov x1, 1
lsl x0, x1, x0 ; X0 = X1<<X0 = 1<<i
mov x1, x0
-; X1 = 1<<1
+; X1 = 1<<i
ldr x0, [sp,8]
; X0 = a
and x0, x1, x0
@@ -7,7 +7,7 @@ \subsection{\RU{Выделяем место для структуры через
\lstinputlisting{patterns/15_structs/2_using_malloc/systemtime_malloc.c}
\RU{Скомпилируем на этот раз с оптимизацией (\Ox) чтобы было проще увидеть то, что нам нужно.}
-\EN{Let's compile it now with optimization (\Ox) so it would be easy see what we need.}
+\EN{Let's compile it now with optimization (\Ox) so it would be easy to see what we need.}
\lstinputlisting[caption=\Optimizing MSVC]{patterns/15_structs/2_using_malloc/systemtime_malloc.asm}
@@ -3,7 +3,8 @@ \subsubsection{MIPS}
\lstinputlisting[caption=\Optimizing GCC 4.4.5 (IDA),numbers=left]{patterns/15_structs/4_packing/MIPS_O3_IDA.lst}
-Structure fields come in registers \$A0..\$A3 and then get reshuffled into \$A1..\$A4 for \printf.
+Structure fields come in registers \$A0..\$A3 and then get reshuffled into \$A1..\$A3 for \printf,
+while 4th field (from \$A3) is passed via local stack using \INS{SW}.
But there are two SRA (\q{Shift Word Right Arithmetic}) instructions, which prepare \Tchar fields.
Why?
@@ -4,7 +4,8 @@ \subsubsection{MIPS}
% TODO translate to Russian:
\lstinputlisting[caption=\Optimizing GCC 4.4.5 (IDA),numbers=left]{patterns/15_structs/4_packing/MIPS_O3_IDA.lst}
-Поля структуры приходят в регистрах \$A0..\$A3 и затем перетасовываются в регистры \$A1..\$A4 для \printf.
+Поля структуры приходят в регистрах \$A0..\$A3 и затем перетасовываются в регистры \$A1..\$A3 для \printf,
+в то время как 4-е поле (из \$A3) передается через локальный стек используя \INS{SW}.
Но здесь есть две инструкции SRA (\q{Shift Word Right Arithmetic}), которые готовят поля типа \Tchar.
@@ -11,12 +11,12 @@ arg_0 = dword ptr 8
mov eax, [ebp+arg_0]
or eax, 80000000h ; set minus sign
mov edx, eax
- and eax, 807FFFFFh ; leave only significand and exponent in EAX
+ and eax, 807FFFFFh ; leave only sign and significand in EAX
shr edx, 23 ; prepare exponent
add edx, 2 ; add 2
movzx edx, dl ; clear all bits except 7:0 in EAX
shl edx, 23 ; shift new calculated exponent to its place
- or eax, edx ; add new exponent and original value without exponent
+ or eax, edx ; join new exponent and original value without exponent
mov [ebp+var_4], eax
fld [ebp+var_4]
leave
@@ -16,7 +16,7 @@ arg_0 = dword ptr 8
add edx, 2 ; прибавить 2
movzx edx, dl ; сбросить все биты кроме 7:0 в EAX в 0
shl edx, 23 ; подвинуть новую только что вычисленную экспоненту на свое место
- or eax, edx ; сложить новую экспоненту и оригинальное значение без экспоненты
+ or eax, edx ; соеденить новую экспоненту и оригинальное значение без экспоненты
mov [ebp+var_4], eax
fld [ebp+var_4]
leave
@@ -44,7 +44,7 @@ \section{Pointers to functions}
int (*compare)(const void *, const void *)
\end{lstlisting}
-Let's use a slightly modified example which was found \href{http://go.yurichev.com/17079}{here}:
+Let's use the following example:
\lstinputlisting[numbers=left,label=qsort_c_src]{patterns/18_pointers_to_functions/17_1.c}
@@ -47,7 +47,7 @@ \section{Указатели на функции}
int (*compare)(const void *, const void *)
\end{lstlisting}
-Воспользуемся немного модифицированным примером, который был найден \href{http://go.yurichev.com/17079}{здесь}:
+Попробуем такой пример:
\lstinputlisting[numbers=left,label=qsort_c_src]{patterns/18_pointers_to_functions/17_1.c}
@@ -54,8 +54,8 @@ loc_67: ; CODE XREF: f(int,int *,int *,int *)+59
jb loc_143
loc_7F: ; CODE XREF: f(int,int *,int *,int *)+65
- mov edi, eax ; edi = ar1
- and edi, 0Fh ; is ar1 16-byte aligned?
+ mov edi, eax ; edi = ar3
+ and edi, 0Fh ; is ar3 16-byte aligned?
jz short loc_9A ; yes
test edi, 3
jnz loc_162
@@ -54,8 +54,8 @@ loc_67: ; CODE XREF: f(int,int *,int *,int *)+59
jb loc_143
loc_7F: ; CODE XREF: f(int,int *,int *,int *)+65
- mov edi, eax ; edi = ar1
- and edi, 0Fh ; ar выровнен по §16-байтной§ границе?
+ mov edi, eax ; edi = ar3
+ and edi, 0Fh ; ar3 выровнен по §16-байтной§ границе?
jz short loc_9A ; да
test edi, 3
jnz loc_162
@@ -4,7 +4,7 @@
\subsubsection{32-bit ARM}
\label{ARM_big_constants_loading}
-Aa we already know, all instructions have a length of 4 bytes in ARM mode and 2 bytes in Thumb mode.
+As we already know, all instructions have a length of 4 bytes in ARM mode and 2 bytes in Thumb mode.
Then how can we load a 32-bit value into a register, if it's not possible to encode it in one instruction?

0 comments on commit b13860e

Please sign in to comment.