Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // lab5.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
- // Made by BadDragon in educational purpose
- //
- #include <iostream>
- void addDoubleWord(long& value, long& value_b);
- void addDoubleWord();
- void addDoubleGlobal();
- long global_a, global_b;
- int main()
- {
- long value_a, value_b;
- value_a = 123;
- value_b = 456;
- std::cout << "Value a= " << value_a << "; Value b= " << value_b << std::endl;
- std::cout << "Should be " << value_a + value_b<< std::endl;
- __asm {
- mov ebx, value_a
- mov edx, value_b
- }
- addDoubleWord();
- __asm {
- mov value_a, eax
- }
- std::cout << "Using registers " << value_a << std::endl;
- global_a = value_a;
- global_b = value_b;
- addDoubleGlobal();
- std::cout << "Using shared memory " << global_b << std::endl;
- addDoubleWord(value_a, value_b);
- std::cout << "Using stack " << value_a;
- }
- void addDoubleWord(long& value_a,long& value_b) {
- long long local;
- __asm {
- lea esi, [ebp+4]
- mov eax, [esi]
- lea esi, [ebp+8]
- mov ebx, esi
- mov [esi+4], ebx
- }
- }
- void addDoubleWord() {
- __asm {
- mov ecx, ebx
- mov eax, edx
- add eax, ecx
- }
- }
- void addDoubleGlobal() {
- __asm {
- lea esi, global_a
- mov eax, [esi]
- lea esi, global_b
- mov ebx, [esi]
- mov [esi], eax
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement